对于一个角度项目,我试图将包含HTML代码的字符串变量转换为pdf文件。
我安置了所有的家属,比如:
jspdf格式
光栅化HTML
我的代码如下:
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,但我得到了以下错误:
不是有效的base64字符串jsPDF。convertStringToImageData错误:
提供的数据不是有效的base64字符串
jsPDF.convertStringToImageData
在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
在Object.onInvoke上(core.js:3820)
在ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke
(js区:387)
js区:872
在ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask
在resolvePromise(区域js:814)
js区:877
在ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask
(js区:421)
在Object.onInvokeTask上(core.js:3811)
在ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask
在Zone.push../node_modules/Zone.js/dist/Zone.js.Zone.runTask(Zone.js:188)
在drainMicroTaskQueue(zone.js:595)
在ZoneTask.push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask
在invokeTask(区域js:1540)
位于Image.globalZoneAwareCallback(zone.js:1566)
提前谢谢你。