PDF在线预览插件汇总与方案总结

先介绍下工作背景:

java一枚,最近在做政府单位的信息管理软件,后台需要对数据进行汇总,并生成PDF格式的报告文件,生成PDF文件用的是iReport生成的,具体可以去百度。生成完之后客户得查看吧,下载之后再查看PDF文件的方式体验不好,需要利用插件在浏览器上进行在线预览。于是开始了研究之路.......(噢对了,后面还做了电子签章,就是对PDF进行电子签章)


一、PDF转SWF(FlexPaper预览)

这种做法类似于百度和豆丁的做法,就是先将PDF文件转换成swf文件,然后利用FlexPaper插件进行预览,优点是浏览器性好。请看下面的百度介绍:


具体做法可以百度,一大把。我下面就说一下我遇到的问题:

1、首先我们的产品是给政府单位用的,某些单位的网络环境比较安全,是完全与互联网隔离的,但是FlexPaper这个插件在一些新机器上首次使用时,需要连接adobe官网缓存一些必要文件到客户端本地,但是由于无法连接互联网,所以FlexPaper插件不能初始化,导致这个方案被毙了(但是后来查资料说 flexpaper在打包时可以选择将缓存文件一起打包进去,这样就能避免这个问题,但是研究了几天都没研究出来)

2、swf文件清晰度不够,客户一直诟病这个

3、我们的PDF是需要进行电子签章的,但是pdf2swf 时,不能转换电子签章的图片,也就是电子签章丢失。


二、pdf.js 


这是一款利用H5渲染PDF的插件

优点:无需安装任何插件;清晰度高;

缺点:需要浏览器支持H5;无法展示 电子签章;

因为我们最低要支持IE8,所以这方案也被毙掉了。


三、adobe PDF reader activeX

这是adobe提供的一个基于IE浏览器的PDF浏览插件,并且提供了一些接口。具体调用方式如下:

var activeX=""+
            " "+
      " "+
      " "+
" "+
" "+
" "+
      " ";
$("#pdfviewobj").html(activeX); 
  

 Adobe Reader ActiveX的常用方法(Methods)

□ gotOFirstPage:到第一页。

□ GotoLastPage:到最后一页。

□ GotoNextPape:到。

□ GotopriciousPape:到。

□ Print:打印文件。

□ PrintPages:打印指定页。带2个参数,第一个参数指定起始页,第一个参数指定结

束页。

□ Printwithdialog:打印文件前先显示打印机属性对话框。

□ SetCurrentpage:到指定页。带一个参数,该参数指定要跳转到的页数。

□ setshowscrollbars:设置是否显示Acrobat Reader的滚动条。带一个参数,该参数设为0时不显示滚动条,设为1时显示滚动条。

□ SetshowTOolbar:设置是否显示 Acrobat Reader的工具栏。带一个参数,该参数设为0时不显示,设为1时显示。

□ setView:设置显示效果。带一个参数,该参数是一个字符串,设为fit时将达到最佳显示效果。

□ SetZoom:设置文件的显示比例。带一个参数,该值为一个数值,比如设为90时,即为原窗口大小的90%。


优点:1、清晰度高;2、支持 电子签章的展示(支持展示签名信息);

缺点:1、需要安装adobe PDF reader桌面端程序,客户现场环境恶劣,偶尔出现安装不成功;2、只支持IE浏览器;3、连续打印时,浏览器容易卡死



四、PDFBox生成图片

优点:

1、无需安装插件;
2、浏览器兼容性好;
3、清晰度高;
4、支持 电子签章的展示(不支持展示签名信息);

缺点:

生成图片速度较慢,4页的PDF需要6000毫秒;

如果PDF中的字体,在服务器上未安装,则会导致生成的图片乱码。



PDF在线预览插件汇总与方案总结_第1张图片













你可能感兴趣的:(java,web)