PDFJS.getDocument 不工作并且没有抛出错误
PDFJS.getDocument not working and not throwing an error
之后不会进入 .then
,也不会抛出任何错误。
这是我的调用代码:
function loadPage(base64Data, pageIndex) {
var pdfData = base64ToUint8Array(base64Data);
// this gets hit
PDFJS.getDocument(pdfData).then(function (pdf) {
// never gets here
pdf.getPage(pageIndex).then(function (page) {
var scale = 1;
var viewport = page.getViewport(scale);
var canvas = document.getElementById('pdfPage');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
page.render({ canvasContext: context, viewport: viewport });
});
});
}
function base64ToUint8Array(base64) {
var raw = atob(base64); // convert base 64 string to raw string
var uint8Array = new Uint8Array(raw.length);
for (var i = 0; i < raw.length; i++) {
uint8Array[i] = raw.charCodeAt(i);
}
return uint8Array;
}
在某一时刻它奏效了。当我在调试器中单步执行它时,我可以单步执行 PDFJS.getDocument
但这超出了我的理解范围。
我的 base64Data 看起来像 JVBERi0x...g==
。这是一个base64编码的pdf文档。
为了解决这个问题,我不得不添加
PDFJS.disableWorker = true;
到我的 loadPage
函数的开头。
来自 View PDF files directly within browser using PDF.js,
PDF.js uses Web Workers concept of HTML5 internally to process the
request. If this statement is set to false, it creates an instance of
Web workers. Web Workers run in an isolated thread. For more
information on web workers; please refer
http://www.html5rocks.com/en/tutorials/workers/basics/
您的代码中缺少 Promise。这是我解决问题的方法:
PDFJS.getDocument(pdfData).promise.then(function (pdf) {
// do your stuff
});
之后不会进入 .then
,也不会抛出任何错误。
这是我的调用代码:
function loadPage(base64Data, pageIndex) {
var pdfData = base64ToUint8Array(base64Data);
// this gets hit
PDFJS.getDocument(pdfData).then(function (pdf) {
// never gets here
pdf.getPage(pageIndex).then(function (page) {
var scale = 1;
var viewport = page.getViewport(scale);
var canvas = document.getElementById('pdfPage');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
page.render({ canvasContext: context, viewport: viewport });
});
});
}
function base64ToUint8Array(base64) {
var raw = atob(base64); // convert base 64 string to raw string
var uint8Array = new Uint8Array(raw.length);
for (var i = 0; i < raw.length; i++) {
uint8Array[i] = raw.charCodeAt(i);
}
return uint8Array;
}
在某一时刻它奏效了。当我在调试器中单步执行它时,我可以单步执行 PDFJS.getDocument
但这超出了我的理解范围。
我的 base64Data 看起来像 JVBERi0x...g==
。这是一个base64编码的pdf文档。
为了解决这个问题,我不得不添加
PDFJS.disableWorker = true;
到我的 loadPage
函数的开头。
来自 View PDF files directly within browser using PDF.js,
PDF.js uses Web Workers concept of HTML5 internally to process the request. If this statement is set to false, it creates an instance of Web workers. Web Workers run in an isolated thread. For more information on web workers; please refer http://www.html5rocks.com/en/tutorials/workers/basics/
您的代码中缺少 Promise。这是我解决问题的方法:
PDFJS.getDocument(pdfData).promise.then(function (pdf) {
// do your stuff
});