如何减少html2canvas导出文件的大小

时间:2018-07-18 10:04:15

标签: angular html2canvas

我正在使用html2canvers库创建发票并下载为PDF(A4尺寸PDF)。下载的文件大小始终很大(7MB-13MB)。有没有办法减小文件大小并保持PDF的质量。

 public downloadPDF(order_id: string): void {            
        html2canvas(this.invoicepdf.nativeElement).then(function (canvas) {
            var wid: number
            var hgt: number
            var img = canvas.toDataURL("image/png", wid = canvas.width, hgt = canvas.height);
            var hratio = hgt / wid
            var height = 210 * hratio
            var pdf = new jsPDF("p", "mm", "a4");
            var imgData = canvas.toDataURL('image/png', 1.0);
            pdf.addImage(imgData, 'PNG', 0, 0, 210, height);
            pdf.save(order_id + '_Invoice.pdf');           
        });            
    }

1 个答案:

答案 0 :(得分:2)

使用jsPDF,使用addImage()函数,可以压缩生成的JPEG(值为'NONE','FAST','MEDIUM'或'SLOW')。 cf。:https://rawgit.com/MrRio/jsPDF/master/docs/module-addImage.html

因此,通过这样做,您可以减小导出文件的大小:

// ...
var img = canvas.toDataURL("image/jpeg", [...])
// ...
pdf.addImage(imgData, 'JPEG', 0, 0, 210, height, 'someAlias', 'FAST');
// ...