【发布时间】:2019-01-02 20:58:21
【问题描述】:
我们有一个 AngularJS 网络应用程序,它从服务器加载 PDF 文档并将它们显示在页面中,如下所示:
<object id="preview" type="application/pdf" data="blob:{fileUrl}">
每当用户执行某些操作时,我们都有一个新的审核要求:
- 查看文档(完成)
- 打印文档
- 下载文件
PDF 下载和打印控件位于浏览器 PDF 查看器中。我们只需要支持最新的 Google Chrome(截至 2018 年 7 月的 Chrome 68)。
是否可以检测文件何时从 PDF 查看器下载或打印?我没有看到任何印前/印后事件,我认为是因为它是跨域的。我们不需要控制处理程序,只需以某种方式检测事件即可。
【问题讨论】:
-
我不知道,但是……如果你打开 Chrome DOM 检查器,你能看到 PDF 查看器的任何 DOM 元素吗?或许还附加一个点击事件到窗口,然后console.log event.target 看看PDF查看器是否被识别?
-
这是如何在 pdf help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/… 中添加 JavaScript 并在没有 acrobat 的情况下添加 javascript,请参阅 bililite.com/blog/2012/06/06/adding-javascript-to-pdf-files 我认为解决方案(如果有的话)是关于 pdf 中的 JavaScript
-
我认为您无法从浏览器中检测到这一点。出于安全原因,打印功能位于浏览器沙箱“外部”。这也是为什么您不能在没有浏览器显示某种打印对话框或表单的情况下让网页开始打印的原因。如果允许,Internet Baddies 可能只会让网页开始打印大量纸张并引起悲伤、沮丧和更糟糕的反应。我认为打赌的方法就像 Emeeus 建议的那样,让您拥有 PDF 本身,看看它是否可以报告打印。
-
你怎么知道用户是否在下载后打印了文档? - 无论你试图解决这个问题,统计数据都会有缺陷。在这种情况下,这些数字的业务目标很重要。
标签: javascript google-chrome pdf printing dom-events