首页 > 解决方案 > 使用 jspdf 将 HTML 转换为 pdf 时出错

问题描述

对于 Angular 项目,我正在尝试将包含 HTML 代码的字符串变量转换为 pdf 文件。我安装了所有依赖项,例如:

我的代码如下所示:

  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 字符串 jsPDF.convertStringToImageData 错误:提供的数据不是有效的 base64 字符串 jsPDF.convertStringToImageData 在 Object.x.convertStringToImageData (jspdf .min.js:50) 在 Object.x.addImage (jspdf.min.js:50) 在 Object. (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:

我该如何解决?先感谢您。

标签: javascriptangularjspdf

解决方案


推荐阅读