多个 pdf.js 个实例

Multiple pdf.js instances

我有一个单页应用程序,在这个应用程序中我有不同的页面,使用 pdf.js 显示不同的 pdf。我让 运行 成为问题,因为一旦我初始化 pdf.js 一次,它就会为每个不同的实例使用这些设置,或者看起来如此。

我希望能够在每次访问这些页面时销毁 pdf.js 对象并创建一个新对象。到目前为止,我还没有找到 destroy 方法,我已经尝试删除 canvas 对象,关闭 PDFViewerApplication 但我仍然遇到这些问题。

我看到的一些错误是: -覆盖已经注册 -offsetParent 未设置 -- 无法滚动

最快的答案是您的单页网站可以使用框架。

* { border: 0; margin: 0; padding: 0; overflow: hidden; }
iframe { width: 100%; height: 50%; width: 100vw; height: 50vh; }
<iframe src="http://mozilla.github.io/pdf.js/web/viewer.html"></iframe>
<iframe src="http://mozilla.github.io/pdf.js/web/viewer.html"></iframe>

JavaScript 全局对象将绑定到它们各自框架的 Window 对象,并且不会相互干扰。

您可以使用 Mozilla 的示例,更改 viewer.js 以从查询变量或位置的哈希组件中提取。使用 ?path=document123.pdf#document123.pdf.

等参数为框架编写 URL

如果你需要销毁一个,你可以直接销毁框架。如果需要操纵一个,可以伸到框内(CORS, XSS rules, security permitting...) by using contentWindow (or (iframe.contentDocument || iframe.contentWindow.document)) on the iframe element.

如果您无法通过 contentWindow 直接访问,您可以使用 [= 构建脚本来发送和接收信号20=],或者只完成框架脚本中的所有工作。