如何将内置PDF查看器的Chromes集成到webapp中

时间:2015-09-07 05:15:38

标签: javascript google-chrome pdf pdf.js

点击网络应用中的PDF链接时,应该将用户从

转到PDF查看器页面
  1. 可以打印请求
  2. 用户无法下载文档
  3. 我是否应该为此目的使用浏览器内置PDF查看器?

    pdf.js相对于内置浏览器PDF查看器有什么优势?

    更重要的是,是否建议将我的webapp与Chromes内置PDF查看器集成,以及如何满足上述两个条件?

2 个答案:

答案 0 :(得分:3)

关于在pdf观众中使用pdf.js优于任何优势的问题:

  1. 在浏览器中呈现PDF的传统方法是使用本机代码插件,Adobe自己的PDF阅读器或其他商业渲染器,或某些开源替代品(例如poppler)。 从安全角度来看,这会扩大受信任的代码库,因此谷歌的Chrome浏览器会对PDF渲染器进行沙盒处理,以避免代码注入攻击。基于HTML5的pdf.js实现完全不受这类问题的影响。
  2. PDF.js比任何类型的插件都具有速度优势,因为它立即开始渲染,使用内置插件,您必须等待插件加载。此外,如果用户已禁用该插件,则不会打开您的pdf。但是使用pdf.js时这个问题永远不会出现。
  3. image source: https://hacks.mozilla.org/2014/05/how-fast-is-pdf-js/

    1. 上图让我们一眼就能看到几乎所有有趣的结果。您可以看到处理PDF中所有页面所花费的时间的直方图,与处理Tracemonkey Paper平均页面所需的平均时间相关(打开PDF.js时看到的默认PDF)。
    2. PDF.js几乎适用于所有知名网站和智能手机浏览器。 Here是当前支持的浏览器列表。因此,与您现在尝试做的事情相比(即,仅尝试计算铬),使用pdf.js将扩大您的用户范围以及他们可以用于您的产品的浏览器。

    3. pdf.js中已经存在打印功能,因此已经解决了您的第一个要求。

    4. 至于您的第二个需要是阻止下载pdf。 Here(ztraboo链接中的最后一条评论),您可以在哪里找到要评论的内容out和从pdf.js源代码中删除的下载代码,以便删除下载按钮和促进相同的代码。

    5. 最后,开始使用pdf.js的快速教程是here。只需使用您的实际服务器而不是那里的localhost。

答案 1 :(得分:1)

PDF.js是客户端javascript脚本,与原生插件相比具有以下优势:

  • 它不需要执行本机代码,并且使用PDF.js与作为本机应用程序运行的插件相比更安全(理论上);因此安全性较低;
  • 使用pdf.js即使用户关闭了Chrome中的所有原生插件,您也可以显示PDF文件(例如出于安全原因);
  • web开发人员可以立即提供更新的pdf.js,而不是要求用户下载并安装新的浏览器插件;
  • 使用PDF.js,您可以从您的javascript代码访问呈现的PDF元素,但是使用插件,您实际上正在运行另一个应用程序(PDF查看器插件),您可以在其中访问其属性,方法和UI;

所以说你的问题你应该更好地使用PDF.js,这样你就可以实现与代码和查看器的深度集成。但是使用pdf插件,除了它提供的有限的API之外,你无法访问它的元素,UI等。