Экспорт в PDF угловой 6 - PullRequest
1 голос
/ 08 марта 2019

Я хочу экспортировать свою HTML-страницу в pdf, используя angular 6. Я написал следующий код для преобразования в pdf

let dataPdf = document.getElementById('contentToPrint');
const pdf = new jspdf('p', 'pt', 'a4');
pdf.addHTML(document.getElementById('contentToPrint'),()=>{
    pdf.save('web.pdf');
});

Ошибка получения:

core.js:12301 ERROR Error: Supplied Data is not a valid base64-String jsPDF.convertStringToImageData 
    at Object.x.convertStringToImageData (jspdf.min.js:50)
    at Object.x.addImage (jspdf.min.js:50)
    at Object.<anonymous> (jspdf.min.js:188)
    at Object.options.complete (html2canvas.js:2711)
    at start (html2canvas.js:2215)
    at Object._html2canvas.Preload (html2canvas.js:2488)
    at html2canvas.js:2719
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:13842)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)

Ответы [ 3 ]

1 голос
/ 12 марта 2019

У меня похожая проблема.

Похоже, вам нужно конвертировать ваш элемент DOM в PNG. Если у вас есть его, вам нужно преобразовать его в строку base64 и добавить его с pdf.addImage()

Вы можете использовать html2canvas для преобразования элементов DOM в изображения.

EDIT

let dataPdf = document.getElementById('contentToPrint');
const pdf = new jspdf('p', 'pt', 'a4');
 html2canvas(dataPdf).then((canvas) => {
   let img = canvas.toDataURL('image/png');
   pdf.addImage(img, 'png', 40, 90, 515, 600); //sizings here
   pdf.save('web.pdf');
 }

1 голос
/ 09 марта 2019

Вам нужно конвертировать изображение в base64.

Если ваши изображения статичны, вы можете конвертировать их здесь: https://www.base64 -image.de /
Если изображения динамические: Преобразование изображения в base64 в угловые 2

После преобразования изображения в строку base64 вы можете передать его в jsPDf как:

pdf.addHTML('your base64 string);
0 голосов
/ 01 апреля 2019

Вы можете сделать что-то вроде этого

import html2canvas from 'html2canvas';

var data = document.getElementById('ELEMENT_ID');
        html2canvas(data).then(canvas => {
            var imgWidth = 208;
            var pageHeight = 295;
            var imgHeight = canvas.height * imgWidth / canvas.width;
            var heightLeft = imgHeight;

            const contentDataURL = canvas.toDataURL('image/png')
            let pdf = new jspdf('p', 'mm', 'a4'); // A4 size page of PDF  
            var position = 0;
            pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight)
            //save file with specific name
            pdf.save("Wallet.pdf");
        });
...