简体   繁体   English

导出为 PDF 角度 6

[英]Export To Pdf angular 6

I want to export my HTML page into pdf using angular 6. I have written following code to convert into pdf我想使用 angular 6 将我的 HTML 页面导出为 pdf。我编写了以下代码来转换为 pdf

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

Getting Following Error:得到以下错误:

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)

You need to convert your image to base64.您需要将图像转换为 base64。

If your images are static you can convert them here: https://www.base64-image.de/如果您的图像是静态的,您可以在此处转换它们: https : //www.base64-image.de/
If images are dynamic: Converting an image to base64 in angular 2如果图像是动态的: 以角度 2 将图像转换为 base64

After image conversion to base64 string, you can pass that to jsPDf as:图像转换为 base64 字符串后,您可以将其传递给 jsPDf:

pdf.addHTML('your base64 string);

I'm facing a similar problem.我面临着类似的问题。

It looks like you need convert your DOM element into a PNG.看起来您需要将 DOM 元素转换为 PNG。 Once you have it, you have to convert it to base64 string and add it with pdf.addImage()获得后,您必须将其转换为 base64 字符串并使用pdf.addImage()添加

You can use html2canvas to convert DOM elements into images.您可以使用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');
 }

You can do something like this你可以做这样的事情

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");
        });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM