В проекте 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 Ошибка: Uncaught (в обещании): Ошибка: предоставленные данные не являются действительными 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)в resolPromise (zone.js: 814) в zone.js: 877 в ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask (zone.js: 421) в Object.onInvokeTask (ядро.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) на канале MicroTaskQueue (zone.js: 595) в ZoneTask.push ../ node_modules / zone.js / dist / zone.js.ZoneTask.invokeTask [как активировать] (зона.js: 500) в invokeTask (zone.js: 1540) в Image.globalZoneAwareCallback (zone.js: 1566)
Как я могу это исправить?Заранее спасибо.