# PDFViewer 多实例
# 概念解释
多实例: 在同一网页中创建和管理多个独立的 PDFViewer 实例的能力,无需使用 iframe 等方法。每个实例可以加载、显示和操作独立的 PDF 文档,而不会相互干扰。
PDFViewer: 是 Foxit PDF SDK for Web 的一个重要入口类。通过 Foxit PDF SDK for Web 渲染 PDF 文档,需要实例化这个类。
# 之前版本的限制
在 9.0.0 版本之前,仅支持创建和使用一个 PDFViewer 实例,这使得开发者无法同时加载和展示多个 PDF 文档(尽管可以借助 iframe 来实现,但 iframe 存在许多不足,因此不再推荐使用)。然而,在经历了一系列升级和改进后,从 9.0.0 版本开始,多实例功能得到了支持。
# 如何实现 PDFViewer 多实例
在实现多个 PDFViewer 实例之前,首先需要创建多个 DOM 实例,这是非常重要的一步。因为每个 PDFViewer 实例都需要在指定的 DOM 节点中进行渲染。下面是一个简化后的代码示例:
var PDFViewer = PDFViewCtrl.PDFViewer;
function createPDFViewer(containerId) {
var eContainer = document.getElementById(containerId);
var pdfViewer = new PDFViewer({
libPath: '../../../lib',
jr: {
licenseSN: licenseSN,
licenseKey: licenseKey,
},
customs: {
ScrollWrap: PDFViewCtrl.CustomScrollWrap
}
});
var eSelectPDFFile = eContainer.querySelector('[name=select-pdf-file]');
var eRenderTo = eContainer.querySelector('.pdf-viewer');
pdfViewer.init(eRenderTo);
return pdfViewer;
}
关于完整的代码示例,请参考 Full 包中的示例:
examples/PDFViewCtrl/multiple-case
。
以下是一个可运行的实例,请点击 run
按钮预览效果:
# 多实例的应用场景
在法律领域中同时查阅多个案件文件,或在学术研究中对比多个相关论文。可以参考 Full 包中的 /examples/PDFViewCtrl/overlay-comparison
示例。