PDF.JS: рендеринг PDF с использованием ArrayBuffer или Blob вместо URL
Я знаю подобный вопрос к этому:Pdf.js: рендеринг файла PDF с использованием исходного файла base64 вместо URL, На этот вопрос отлично ответилиCodetoffel но мой вопрос другой в том, что мой PDF извлекается через вызов RESTful моей реализации Web API. Позволь мне объяснить...
Во-первых, вот основной способ использования PDF.JS для открытия PDF-файла через URL:
PDFJS.getDocument("/api/path/to/my.pdf").then(function (pdf) {
pdf.getPage(1).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});
});
});
Это прекрасно работает, но я использую Angular и его$resource
сервис для запроса PDF через мой RESTful Web API. Я знаю, что PDF.JS позволяет мне заменить передачу URL-адреса в виде строки в методе PDFJS.getDocument (выше) наDocumentInitParams
объект, который определенВот, Использование объекта DocumentInitParams работает следующим образом:
var docInitParams = {
url: "/api/path/to/my.pdf",
httpHeaders: getSecurityHeaders(), //as needed
withCredentials: true
};
PDFJS.getDocument(docInitParams).then(function (pdf) {
...
});
Это также работает, но работает вокруг моего Angular$resource
потребовав, чтобы я создал URL API. Но это нормально, потому что PDFJS позволяет мне передавать данные PDF напрямую, а не URL-адрес PDF, следующим образом:
var myPdf = myService.$getPdf({ Id: 123 });
//It's an Angular $resource, so there is a promise to be fulfilled...
myPdf.$promise.then(function() {
var docInitParams = {
data: myPdf
};
PDFJS.getDocument(docInitParams).then(function (pdf) {
...
});
});
Это тот, кого я не могу заставить работать. Я могу сказатьmyService.$gtPdf
метод для возврата данных в видеblob
или какarraybuffer
но ни один не работает. Я пытался преобразовать возвращенные данные массива буфера вUint8Array
тоже, но безрезультатно.
Я не уверен, что еще можно попробовать и мог бы действительно использовать чаевые.
Как получить данные, возвращенные из моей службы, для работы с PDFJS?
Заранее спасибо.