【问题标题】:Create multiple page PDF in angular以角度创建多页PDF
【发布时间】:2021-03-24 19:55:24
【问题描述】:

如何在angular中生成多个PDF页面

【问题讨论】:

    标签: angular pdf jspdf html2canvas


    【解决方案1】:

    首先,下载jsPDF和html2canvas
    npm i jspdf --save
    npm i html2canvas --save

    然后导入到组件中

    pdf.component.ts

    import html2canvas from 'html2canvas';
    import * as jsPDF from 'jspdf';
    
    /** ... **/
    
    export class PdfComponent {
      items = [{ title: 'first' }, { title: 'second' }] // Content of the pages
      counter: number
      length: number
      pdf: jsPDF
    
      downloadPDF() {
        this.pdf = new jsPDF('p', 'mm', 'a4') // A4 size page of PDF
        this.length = this.items.length
        this.counter = 0
    
        this.generatePDF()
      }
    
      generatePDF() {
        var data = document.getElementById('pdf' + this.counter)
    
        html2canvas(data, {
          scale: 3 // make better quality ouput
        }).then((canvas) => {
          this.counter++
    
          // Few necessary setting options
          var imgWidth = 208
          var imgHeight = (canvas.height * imgWidth) / canvas.width
    
          const contentDataURL = canvas.toDataURL('image/png')
          var position = 0
          this.pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight)
    
          // Control if new page needed, else generate the pdf
          if (this.counter < this.length) {
            this.pdf.addPage()
            this.getLetter()
          } else {
            this.pdf.save('users.pdf') // Generated PDF
            return true
          }
        })
      }
    }
    <!-- pdf.component.html -->
    <div [id]="'pdf'+i" *ngFor="let item of items; index as i">
      <h1>{{ item.title }}</h1>
      <!-- the content of one page here -->
    </div>
    
    <button (click)="downloadPDF()">
      generatePDF
    </button>

    注意:导出到大量文件会破坏浏览器并给您一个
    “Debuggin 连接已关闭,原因:渲染进程已消失。”

    在 Angular 7.2.1 中测试

    【讨论】:

      猜你喜欢
      • 2020-09-17
      • 2021-11-30
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 2023-02-08
      • 2021-04-07
      • 2019-12-26
      相关资源
      最近更新 更多