Объединить несколько декодированных Base64 PDF в один PDF, используя reactjs - PullRequest
0 голосов
/ 14 февраля 2020

Я получаю 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 (). Используйте другой холст или убедитесь, что предыдущие операции были отменены или завершены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...