我正在使用以下代码在使用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 });
});
}
});
}
我遇到了同样的问题。我使用async和await修复了相同问题。请检查。
async function renderPages(pdfDoc) {
var docId = pdf.docId;
var pdfDocumentObject = {};
pdfDocumentObject[docId] = pdfDoc;
pdfData.setPdfDocumentObject(pdfDocumentObject);
for (var num = 1; num <= pdfDoc.numPages; num++) {
await pdfDoc.getPage(num).then(renderPage);
}
}
if(pdf.docBlob && pdf.docId == null){
var blob = b64toBlob(pdf.docBlob, 'pdf');
pdfurl = URL.createObjectURL(blob);
PDFJS.getDocument(pdfurl).then(renderPages);
}