【问题标题】:Export To Pdf angular 6导出为 Pdf 角度 6
【发布时间】:2019-03-08 17:28:02
【问题描述】:

我想使用 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');
});

出现以下错误:

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)

【问题讨论】:

    标签: javascript angular angular6 jspdf html-to-pdf


    【解决方案1】:

    您需要将图像转换为 base64。

    如果您的图片是静态的,您可以在此处进行转换: https://www.base64-image.de/
    如果图像是动态的: Converting an image to base64 in angular 2

    图像转换为base64字符串后,您可以将其传递给jsPDf:

    pdf.addHTML('your base64 string);
    

    【讨论】:

    • 什么都做了,但都失败了!
    【解决方案2】:

    我也遇到了类似的问题。

    看起来您需要将 DOM 元素转换为 PNG。一旦你有了它,你必须将它转换为base64字符串并用pdf.addImage()添加它

    您可以使用html2canvas 将 DOM 元素转换为图像。

    编辑

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

    【讨论】:

      【解决方案3】:

      你可以这样做

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

      【讨论】:

        猜你喜欢
        • 2019-04-22
        • 2017-12-10
        • 2018-08-23
        • 1970-01-01
        • 1970-01-01
        • 2019-02-11
        • 2020-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多