对于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-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)
我该如何解决? 预先谢谢你。