Я получаю PDF в кодировке Base64 в виде множественного ответа, и мне нужно декодировать его, чтобы создать один PDF.
Вот мой код для справки.
var pdf_base1 = "data:application/pdf;base64,JVBERi0xLjQKJfbk/N8KMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKL0Fjcm9Gb3JtIDMgMCBSCi9NZXRhZGF0YSA0IDAgUgo+PgplbmRvYmoKNSAwIG9iago8PAovUHJvZHVZXIgKFJBRCBQREYg..." //shortend
var pdf_base2 = "data:application/pdf;base64,JVBERi0xLjQKJfbk/N8KMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKL0Fjcm9Gb3JtIDMgMCBSCi9NZXRhZGF0YSA0IDAgUgo+PgplbmRvYmoKNSAwIG9iago8PAovUHJvZHVZXIgKFJBRCBQREYg..." //shortend
var pdfDoc,pageNum= 1,pageNumPending = null,pageRendering = false,
pdf= [];
pdf.push(pdf_base1,pdf_base2);
pdf.map(each=>{
this.callPdfLib(each);
})
callPdfLib=(data)=>{
var self = this;
// var files = self.state.files;
var pageCount = this.pageCount;
var arrrBuffer = self.base64ToArrayBuffer(data);
pdfjsLib.getDocument({data:arrrBuffer}).promise.then(function(page) {
pdfDoc = page;
pageCount.textContent = page.numPages;
self.renderPage(pageNum);
});
}
renderPage=(num)=>{
var canvas = this.canvas;
pageRendering = true;
pdfDoc.getPage(num).then(function(page) {
var scale = 1.5;
var viewport = page.getViewport({scale: scale});
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: context,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.promise.then(function() {
pageRendering = false;
if (pageNumPending !== null) {
this.renderPage(pageNumPending);
pageNumPending = null;
}
});
})
}
Обе переменные являются base64 кодировать PDF. При этом я получаю сообщение об ошибке.
Необработанное отклонение (ошибка): невозможно использовать один и тот же холст во время нескольких операций render (). Используйте другой холст или убедитесь, что предыдущие операции были отменены или завершены.