【发布时间】:2022-03-18 13:57:06
【问题描述】:
我正在使用以下代码使用 PDF.js 在 IE 浏览器中显示 PDF。但是这些页面的显示顺序与原始文件的顺序不同。我该如何解决这个问题? 仅在大型 PDF 文档时会发生这种情况...
if (response && response.data.Success) {
var arrayBufferedPdf = base64ToArrayBuffer(response.data.Document);
PDFJS.workerSrc = "./scripts/pdf.worker.js";
PDFJS.getDocument({ data: arrayBufferedPdf }).then(function (pdf) {
var pageNum = 1;
var numPages = pdf.numPages;
for (pageNum; pageNum <= numPages; pageNum++) {
pdf.getPage(pageNum).then(function (page) {
var scale = 1.25;
var viewport = page.getViewport(scale);
var canvasContainer = document.getElementById('canvas_container');
var canvas = document.createElement('canvas');
canvas.height = viewport.height;
canvas.width = viewport.width;
canvasContainer.appendChild(canvas);
var context = canvas.getContext('2d');
page.render({ canvasContext: context, viewport: viewport });
});
}
});
}
【问题讨论】:
-
pdf.getPage(pageNum).then(...)听起来这个 getter 是异步方法? -
是.. 它是.. PDF 将转换为 base 64 并作为响应给出..
-
那么您很可能必须首先“收集”所有
getPage调用的结果,以便之后以正确的顺序呈现它们... -
这适用于少于 20 页的文档,但不止于此……我们的页面顺序不正确
-
@Jackphilip 您是否能够修复它?对于特定的 pdf,它对我来说很重要。我不确定它是 pdf 问题还是 pdfjs。
标签: javascript pdf.js