對于一個角度項目,我試圖將包含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)
提前謝謝你。