当点击网络应用程序中的 PDF 链接时,用户应该被带到 PDF 查看器页面
- 可以提出打印请求
- 用户应该无法下载该文档
我应该使用浏览器内置的 PDF 查看器来实现此目的吗?
与内置浏览器 PDF 查看器相比,pdf.js 有何优势?
更重要的是,是否建议将我的网络应用程序与 Chrome 内置 PDF 查看器集成,以及如何满足上述 2 个条件?
最佳答案
关于在 pdf 查看器中使用 pdf.js 相对于任何 bulit 的好处的问题:
- 在浏览器中渲染 PDF 的传统方法是使用 native 代码插件,可以是 Adobe 自己的 PDF Reader 或其他商业渲染器,也可以是一些开源替代方案(例如 poppler)。 从安全 Angular 来看,这扩大了可信代码库,因此 Google 的 Chrome 浏览器在对 PDF 渲染器进行沙箱处理以避免代码注入(inject)攻击时经历了相当大的痛苦。基于 HTML5 的 pdf.js 实现完全不受此类问题的影响。
- PDF.js 比任何类型的插件都具有速度优势,因为它会立即开始渲染,而使用内置插件时,您必须等待插件加载。此外,如果用户禁用该插件,则您的 pdf 文件将无法打开。但使用 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/