【问题标题】:How to integrate Chromes built in PDF viewer into a webapp如何将内置 PDF 查看器的 Chrome 集成到 Web 应用程序中
【发布时间】:2015-12-02 14:05:50
【问题描述】:

当点击网页应用程序中的 PDF 链接时,用户应该被带到 PDF 查看器页面

  1. 可以提出打印请求
  2. 用户应该无法下载文档

我应该为此使用浏览器内置的 PDF 查看器吗?

pdf.js 相对于浏览器内置的 PDF 查看器有哪些优势?

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

【问题讨论】:

    标签: javascript google-chrome pdf pdf.js


    【解决方案1】:

    关于在 pdf 查看器中使用 pdf.js 的好处的问题:

    1. 在浏览器中渲染 PDF 的传统方法是使用本机代码插件,可以是 Adob​​e 自己的 PDF 阅读器或其他商业渲染器,或者一些开源替代品(例如 poppler)。 从安全角度来看,这扩大了受信任的代码库,因此 Google 的 Chrome 浏览器在对 PDF 渲染器进行沙箱处理以避免代码注入攻击时遇到了相当大的麻烦。基于 HTML5 的 pdf.js 实现完全不受此类问题的影响。
    2. PDF.js 比任何类型的插件都具有速度优势,因为它会立即开始渲染,使用内置插件,您必须等待插件加载。此外,如果该插件已被用户禁用,那么您的 pdf 将不会被打开。但是在使用 pdf.js 时永远不会出现这个问题。


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

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

    4. 至于您的第二个需要是防止下载 pdf。 Here(ztraboo 链接中的最后一条评论)您可以在其中找到要注释掉的行和从pdf.js源代码中删除哪些下载代码,以便删除下载按钮和方便的代码。

    5. 最后一个快速入门的 pdf.js 教程是here。只需使用您的实际服务器而不是那里的本地主机。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2019-02-12
        • 1970-01-01
        • 1970-01-01
        • 2017-10-07
        • 2016-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多