對於我正在處理的項目,我需要能夠生成用戶當前正在使用的頁面的PDF,爲此我將使用jspdf
。因爲我有一個HTML
我需要生成一個PDF,我需要的addHTML()
功能。這裏有很多話題,說Angular2 - 使用jspdf從HTML生成pdf
You'll either need to use
html2canvas
orrasterizehtml
.
我選擇使用html2canvas
。這是我的代碼看起來像此刻:
import { Injectable, ElementRef, ViewChild } from '@angular/core';
import * as jsPDF from 'jspdf';
import * as d3 from 'd3';
import * as html2canvas from 'html2canvas';
@Injectable()
export class pdfGeneratorService {
@ViewChild('to-pdf') element: ElementRef;
GeneratePDF() {
html2canvas(this.element.nativeElement, <Html2Canvas.Html2CanvasOptions>{
onrendered: function(canvas: HTMLCanvasElement) {
var pdf = new jsPDF('p','pt','a4');
pdf.addHTML(canvas, function() {
pdf.save('web.pdf');
});
}
});
}
}
當這個函數被調用時,我得到一個控制檯錯誤:
EXCEPTION: Error in ./AppComponent class AppComponent - inline template:3:4 caused by: You need either https://github.com/niklasvh/html2canvas or https://github.com/cburgmer/rasterizeHTML.js
到底爲什麼會這樣?我給了一個canvas
作爲參數,它仍然說我需要使用html2canvas
。
你試過從html2canvas/dist/html2canvas.js中導入*作爲html2canvas嗎? –
@SyedAliTaqi我想你的建議,但它拋出錯誤 – Vignesh