先介绍下工作背景:
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浏览插件,并且提供了一些接口。具体调用方式如下: