为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Angular 中将 HTML 内容转换为 PDF

如何在 Angular 中将 HTML 内容转换为 PDF

泛舟湖上清波郎朗 2023-09-28 15:37:09
我正在尝试从 HTML 内容生成 PDF 文件。contentDataURL 具有空图像数据。我也尝试过更改 HTML 内容,但生成了相同的空图像。canvas.toDataURL()我的实现有什么问题吗?PDF 文件生成工作正常。我的代码应用程序链接 https://stackblitz.com/edit/angular-ivy-1aug8i<div class="test" id="test">     <button (click)="sendToPdf()">          testpdf</button> </div>         <div class="abc" id="testdivid">            <table style="width:100%">                <tr>                  <th>Firstname</th>                  <th>Lastname</th>                  <th>Age</th>                </tr>                <tr>                  <td>Jill</td>                  <td>Smith</td>                  <td>50</td>                </tr>                <tr>                  <td>Eve</td>                  <td>Jackson</td>                  <td>94</td>                </tr>              </table>         </div>import html2canvas from 'html2canvas';import jspdf from 'jspdf';sendToPdf(){  let data = document.getElementById("test");     // let data = document.getElementById("maindiv");    console.log(data);      html2canvas(data).then(canvas => {      const contentDataURL = canvas.toDataURL('image/jpeg', 1.0)      console.log(contentDataURL);        let pdf = new jspdf('l', 'cm', 'a4'); //Generates PDF in landscape mode      // let pdf = new jspdf('p', 'cm', 'a4'); //Generates PDF in portrait mode      pdf.addImage(contentDataURL, 'PNG', 0, 0, 29.7, 21.0);        pdf.save('Filename.pdf');       }); }
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

重新安装 html2canvas 后工作正常


import html2canvas from 'html2canvas';

import jspdf from 'jspdf';



sendToPdf(){

  let data = document.getElementById("test"); 

    // let data = document.getElementById("maindiv");

    console.log(data);  

    html2canvas(data).then(canvas => {

      const contentDataURL = canvas.toDataURL('image/jpeg', 1.0)

      console.log(contentDataURL);  

      let pdf = new jspdf('l', 'cm', 'a4'); //Generates PDF in landscape mode

      // let pdf = new jspdf('p', 'cm', 'a4'); //Generates PDF in portrait mode

      pdf.addImage(contentDataURL, 'PNG', 0, 0, 29.7, 21.0);  

      pdf.save('Filename.pdf');   

    }); 

}


查看完整回答
反对 回复 2023-09-28
?
哔哔one

TA贡献1854条经验 获得超8个赞

要在 Angular13+ 中使用您的代码,您必须添加 2 行代码,否则会出现 Type 'null' is not allocateable to type 'HTMLElement' 错误:


您可以使用:


  sendToPdf() {

    let data = document.getElementById('test');

    // let data = document.getElementById("maindiv");

    console.log(data);

    if (data != null) {

      html2canvas(data).then((canvas) => {

        const contentDataURL = canvas.toDataURL('image/jpeg', 1.0);

        console.log(contentDataURL);

        let pdf = new jsPDF('l', 'cm', 'a4'); //Generates PDF in landscape mode

        // let pdf = new jspdf('p', 'cm', 'a4'); //Generates PDF in portrait mode

        pdf.addImage(contentDataURL, 'PNG', 0, 0, 29.7, 21.0);

        pdf.save('Filename.pdf');

      });

    }

  }


查看完整回答
反对 回复 2023-09-28
  • 2 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信