您的位置 首页 java

JAVA实现在线查看PDF和office文档,一个很多人都踩坑的问题

今天我来说说这个不怎么被人提起,却又是很多人没搞定的问题!

一个项目中要做一个在线预览附件(和百度文库差不多)的小功能点,我在开发过程中踩了很多坑的同时也总结了一些方法,仅供广大猿友参考,那么要实现这个小功能,目前主要是有如下3种可行的实现方式,下面先说实现的思路设计与他们的优缺点:

第一种思路 :先把附件office文档(doc,docx,ppt, pptx ,xls, xlsx ,txt)转为 pdf 格式,这里需要用一个OpenOffic这玩意来转换,有服务和端口的属性,所以它是一个服务类软件(像tomcat这类,区别是所提供的服务各不相同),然后把PDF转为 swf 文件类型,最后在前台页面使用Flexpaper插件进行播放即可实现。

第二种思路 :第一步还是和第一种一样的,都是先把附件为office文档转换为PDF格式,但是不同于第一种的是得到PDF之后呢,是使用pdf2 HTML ex插件把PDF直接转化为 html 文本输出到页面来。

第一种 方式的 好处 在于:就是不用生成.swf文件,节省空间,提升效率。

第一种 方式的 !好 在于:

首先只能达到附件预览的效果,如果你要实现打印,文本搜索等功能是是要自己另外写代码的。

其次,如果你的PDF中加了水印的话,输出的HTML也是没有水印的。

第三种思路 :最 靠谱 的一种方式,第一步和前两种方法是一样的,都是先把附件Office文档转换了PDF格式,然后不同的是,得到PDF之后,使用PDF.JS这个框架来显示附件,但是这个框架是基于HTML5的新特性才能实现的,IE的话需要9以上版本才能兼容,这是最大的缺点了,优点太多了,即可看到水印,而且打印等这些功能点都已经实现好了,并且可以改变一些参数就可以实现这些按钮的权限的控制, 良心 之作。

写完思路之后当然要写具体要怎么写代码,先说 第一种:

这是 JAVA 后台代码结构

  • 一个是 测试类 ,是用来测试offiec文档转换换为PDF和SWF的
  • 一个 工具类 ,是用来实现转换的代码
  • 一个 配置文件 是是配置你的OpenOffic服务的端口和地址

这是Web前台代码结构

主要是一些CSS和JS的控件和样式,前台的页面主要是这个FlexPaperViewer.html 或者index.html把页面嵌进一个DIV层就能自定义展示,要显示的文档要转换为SWF格式放到WEBROOT下层任意路径,比如我的docs文件夹里的Paper.pdf.swf文件

效果如下

项目Demo代码 百度云 地址:这个项目的 打印功能和水印是被我去掉 的,具体的怎么去掉自己去百度吧很多教程很麻烦这里就不演示

需要我总结的网盘链接的可以转发+私信【源码】获取!

保留了打印 功能的是这个地址:里面有个FlexPaperViewer.swf的配置文件把它替换了原来的就行了

需要我总结的网盘链接的可以私信【源码】获取!

然后说第二种:

通过调用工具类里边的一个方法,把一个PDF文件内容变为静态的HTML,然后浏览器直接显示HTML就可以实现预览效果了。

效果如下

Demo链接: 需要我总结的网盘链接的可以转发+私信【源码】获取!

最后说第三种:

首先呢要在TOMCAT服务器搭建一个PDF.JS框架,说白了就是在webapp文件夹放入一个已经搭建好的小项目,如图

然后如何调用呢?在你的项目中DIV的SRC或者弹框中用

src=文件名 其中resources是个文件夹这个是自己建的就可以了,?后边PDF文件的路径

效果如下

百度云: 需要链接的可以转发+私信【源码】获取! 这个是PDF.JS框架代码

最后附上PDF加水印的代码,也用到一些第三方jar包,直接调用,比较简单。

链接: 需要我总结的网盘链接的可以转发+私信【源码】获取!

最后补充说明一下:

关于把offer文档转换为PDF的时候首先在本机安装OpenOffice,然后就 开启服务 ,在安装目录下的program文件夹(里边是存命令的),进入后 通过 cmd 控制台输入以下命令:

soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard

文章来源:智云一二三科技

文章标题:JAVA实现在线查看PDF和office文档,一个很多人都踩坑的问题

文章地址:https://www.zhihuclub.com/180063.shtml

关于作者: 智云科技

热门文章

网站地图