使用jspdf

时间:2019-03-29 14:28:54

标签: javascript angular jspdf

对于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错误错误:未捕获(承诺中):错误:提供的数据   不是有效的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)       在resolvePromise(zone.js:814)       在zone.js:877       在ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask   (zone.js:421)       在Object.onInvokeTask(core.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)       在rainMicroTaskQueue(zone.js:595)       在ZoneTask.push ../ node_modules / zone.js / dist / zone.js.ZoneTask.invokeTask中   [作为调用](zone.js:500)       在invokeTask(zone.js:1540)上       在Image.globalZoneAwareCallback(zone.js:1566)

我该如何解决? 预先谢谢你。

0 个答案:

没有答案