Ошибка при преобразовании HTML в PDF с JSPDF - PullRequest
1 голос
/ 29 марта 2019

В проекте Angular я пытаюсь преобразовать строковую переменную, содержащую HTML-код, в файл PDF.Я установил все зависимости, такие как:

  • jspdf
  • html2canvas
  • rasterizehtml

Мой код выглядит следующим образом:

  b64DecodeUnicode(str) {
    return decodeURIComponent(atob(str).split('').map(function(c) {
      return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
    }).join(''));
  }


  getBill() {
   //var blob = new Blob([this.b64DecodeUnicode(this.invoicePDF)], {type: "text/html;charset=utf-8"});

    var doc = new jsPDF('p','pt','a4');
   /* doc.text(20, 20, 'Hello world!');
    doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
    doc.addPage('a6','l');
    doc.text(20, 20, 'Do you like that?');
   doc.save('Demo.pdf');*/
    var  htmlData =  String(this.b64DecodeUnicode(this.invoicePDF));
    doc.addHTML(htmlData, function () {
      doc.save('myfilename' + '.pdf');
    });
    //FileSaver.saveAs(doc, "facture_"+this.order.reference+".html");
  }

Для этого я использую jspdf, но я получаю эту ошибку:

core.js: 1673 Ошибка: Uncaught (в обещании): Ошибка: предоставленные данные не являются действительными base64-String jsPDF.convertStringToImageData Ошибка: предоставленные данные не являются допустимыми base64-String jsPDF.convertStringToImageData в Object.x.convertStringToImageData (jspdf.min.js: 50) в Object.x.addImage (jspdf.min.js 50):Объект.(jspdf.min.js: 188) на jspdf.min.js: 188 на ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invoke (zone.js: 388) на Object.onInvoke(core.js: 3820) в ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invoke (zone.js: 387) в Zone.push ../ node_modules / zone.js / dist/zone.js.Zone.run (zone.js: 138) в zone.js: 872 в ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask (zone.js: 421)в resolPromise (zone.js: 814) в zone.js: 877 в ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask (zone.js: 421) в Object.onInvokeTask (ядро.js: 3811) в ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask (zone.js: 420) в Zone.push ../ node_modules / zone.js / dist / zone.js.Zone.runTask (zone.js: 188) на канале MicroTaskQueue (zone.js: 595) в ZoneTask.push ../ node_modules / zone.js / dist / zone.js.ZoneTask.invokeTask [как активировать] (зона.js: 500) в invokeTask (zone.js: 1540) в Image.globalZoneAwareCallback (zone.js: 1566)

Как я могу это исправить?Заранее спасибо.

...