在线显示PDF文档之旅的心得

来源:互联网 发布:淘宝商城检测 编辑:程序博客网 时间:2024/05/13 04:05

   这一周,由于工作的原因,我一直在搜寻关于在线显示pdf的资料,弄得我崩溃至极,最后也没有得到我最终想要的结果,没有很大的成就感,心里很郁闷,所以在这里晒一晒心得,希望能够帮到大家。

  

   具体需求是:

 

   1. PDF文件不能很大,否则下载会很慢,影响用户体验。

   2. PDF的展示需要有文档结构。

   3. 要有内容检索功能。

   4. PDF内容不能拷贝、文件不能被下载。

 

 

 

   根据这些基本的需求,我可以大概确定两种路线:

 

   1. 用现成的FlexPaper展示pdf,像豆丁网、百度文库等等,技术相对比较成熟,参考资料比较多,而且本人还研究过AS脚本,对flex和flash也比较了解。缺点是不能显示文档结构

 

   2. 直接在网页中嵌入pdf,使用adobe reader进行在线查看,文档结构的问题也都能解决了。缺点是不知道能不能达到所有的需求要求。

 

 

 

 

 

问题一:

   首先,我用一些杂七杂八的工具让pdf瘦身、或者分割成若干个小文件。没想到最后用了Adobe Acrobat(创建、编辑PDF文件的工具)才发现,这里都可以做到,我勒个去,我的工作白费了,顿时有种挫败感,郁闷ing……。

 

   1.如果pdf是图片的、扫描的,就用菜单栏中的文档-》优化扫描的PDF,设置参数后,可以在很大程度上缩小pdf文件。

   2.如果其中大部分是文字的,那就直接选文件-》打印,在下面的界面中的名称的地方,选择Adobe PDF,然后打印,打印出来的文件会小很大一部分,我测试的缩小了50%。 这里要注意,这里的打印成pdf,就是重新生成一个pdf,而不是普通意义上的打印成纸质的(下同)。

   3. 如果你不是必须有搜索内容功能,也可以点开打印页面中的“高级”,然后在“作为图像打印”前面的复选框选中,然后打印,最后执行步骤1,这样也会缩小很多。

 

 

   4. 文档-》拆分文档,这里可以把pdf拆分成若干个小pdf

 

 

 

 

问题二:

 

这个拷贝、打印和下载的比较郁闷。

其中,拷贝和打印可以用安全策略对文件加密,不允许adobe reader 打印和拷贝内容。也可以用上面的步骤3中的作为图片打印,也可以防拷。

 

下载不好弄。因为安全策略里没有限制下载(保存按钮)

 

 

用户可以用这个按钮把文档下载到本地。我上网查找到了在 Adobe Acrobat 中 右键文档-》“文档属性”-》“初始化页面”可以设置隐藏菜单、工具栏,但是用户如果键盘输入 Alt + F8,或者Ctrl + F(搜索) 那么菜单栏都会再次出现,没办法彻底防下载。

 

 

我想到用javascript屏蔽 Alt + F8 ,但是结果失败,因为pdf显示时,浏览器根本不能获取到用户的键盘输入,尽管此时的焦点在Body标签上,………………………………郁闷。

 

 

我想在Acrobat中屏蔽保存按钮,结果Google的结果是,没有任何方法可以屏蔽客户端adobe reader的按钮,晕死。

 

 

无意中我发现Acrobat中可以执行javascript,这就好办了,让文件被保存时return false不久行了!!!!!!

因为语法不一样,我甚至搜到了Acrobat javascript API,全是英文的,看的我都快疯了,试了所有的相关的方法,得出的结论:

 

javascript无法阻止保存、打印、关闭这些重要的动作,天塌下来了,武大郎在哪???

 

 

没办法,真的是没有办法不让用户下载,还好,就算用户下载到本地,如果内容进行了安全策略,那么还是无法拷贝和打印,总算是可以勉强结束pdf之旅了,让我郁闷的是Acrobat javascript API,我几乎都完了……,竟然没有,哎,希望大家能够吸取教训,不要像我这么傻了。