javascript - 如何将 Chrome 内置的 PDF 查看器集成到网络应用程序中

标签 javascript google-chrome pdf pdf.js

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

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

我应该使用浏览器内置的 PDF 查看器来实现此目的吗?

与内置浏览器 PDF 查看器相比,pdf.js 有何优势?

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

最佳答案

关于在 pdf 查看器中使用 pdf.js 相对于任何 bulit 的好处的问题:

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

image source: https://hacks.mozilla.org/2014/05/how-fast-is-pdf-js/

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

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

  • 关于您的第二个需求,即防止下载 pdf。 Here (ztraboo 链接中的最后一条评论)您可以在其中找到要注释掉的行以及要从 pdf.js 源代码中删除的下载代码,以便删除下载按钮和促进相同功能的代码。

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

  • 关于javascript - 如何将 Chrome 内置的 PDF 查看器集成到网络应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32431518/

    相关文章:

    php - 如何使用 Clippy 复制 iframe 嵌入代码而不显示 iframe

    javascript - JQuery 在鼠标悬停时更改图像 src 在 IE7 和 8 中不起作用

    google-chrome - Chome 61、ChromeDriver 2.32 单击移动设备模拟器的元素会引发 WebDriverException : unknown error: Element is not clickable at point

    php - 将 html 导出为 pdf 的工具

    pdf - 用 Java Play 显示 PDF! 2 框架

    javascript - 当我不更改范围内的任何内容时,AngularJS 会重新评估绑定(bind)

    javascript - 显示/隐藏提示文本

    javascript - Bootstrap JS 无法在 Chrome 中运行

    jquery - 具有视差效果问题的背景图像 chrome

    javascript - 是否可以在页面加载后立即强制下载文件(如 pdf)