我可以将这样的数据传递给PDFJS.getDocument而不是URL。我的数据:
PDF-1.4 % 90 obj<> endobj xref 9 36 0000000016 00000 n 0000001259 00000 n 0000001336 00000 n ...
答案 0 :(得分:14)
PDFJS.getDocument方法的定义非常清楚,您可以自己阅读:http://mozilla.github.io/pdf.js/api/draft/PDFJS.html#getDocument
您可以使用网址打开PDF:
PDFJS.getDocument('/url/to/file.pdf').then(function(pdf){
var pageNumber = 1;
pdf.getPage(pageNumber).then(function (page) {
var scale = 1;
var viewport = page.getViewport(scale);
var canvas = document.getElementById('the-canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
page.render({canvasContext: context, viewport: viewport});
});
});
在这种情况下,PDFJS会为您调用URL,但如果您已经拥有PDF文件,则可以将数据提供给PDFJS,如下所示:
var docInitParams = { data: myPdfContent };
PDFJS.getDocument(docInitParams).then(function(pdf){
//render a page here
});
问题是原始PDF数据的格式是什么?
如果您刚刚使用Ajax调用从Web服务器检索文件,则数据可能位于ArrayBuffer
。如果是这样,您需要将PDF文件放入Uint8Array
,以便将其设为可访问,如下所示:
//However you get the data, let's say it ends up here in this variable
var arrayBufferOfPdfData = blah..blah..blah;
var myData = new Uint8Array(arrayBufferOfPdfData); //put it in a Uint8Array
var docInitParams = {data: myData};
PDFJS.getDocument(docInitParams).then(function(pdf){
//render a page here
});
最后,您需要知道数据的格式,以便您可以将其转换为可接受的PDFJS格式。如果您的数据被编码为Base64字符串,我没有描述该怎么做,但有another SO question that answers exactly that。
我的答案比你的单行问题更具描述性。所以,如果我没有充分解决你的问题,那么你应该提供更多细节。