多个 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=],或者只完成框架脚本中的所有工作。
我有一个单页应用程序,在这个应用程序中我有不同的页面,使用 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
.
如果你需要销毁一个,你可以直接销毁框架。如果需要操纵一个,可以伸到框内(CORS, XSS rules, security permitting...) by using contentWindow
(or (iframe.contentDocument || iframe.contentWindow.document)
) on the iframe
element.
如果您无法通过 contentWindow
直接访问,您可以使用 [= 构建脚本来发送和接收信号20=],或者只完成框架脚本中的所有工作。