javascript – 使用jspdf创建的pdf文件太大
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用jspdf创建的pdf文件太大,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1976字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 使用jspdf创建的pdf文件太大](/upload/InfoBanner/zyjiaocheng/706/34734c6e7a4745e1995be9597100d37a.jpg)
我正在使用jspdf在浏览器中创建PDF.我有多个图表有svg作为图表数据.为了向pdf添加数据,我使用canvas将svg转换为png,然后使用canvas.toDataURL方法将Base64 Data转换为p64.在所有这些转换之后,jspdf创建的文件大小很大(大约50 MB).
下面是图表数据和画布div的代码.
newdiv = document.createElement("div");
newdiv.className = "big_Con_graph big_Con_graph0";
newdiv.style.height = "0px";
newdiv.id = "big_Con_graph" + id;
下面是SVG图表加载的尺寸.
document.getElementById("big_Con_graph" + id).style.display = "block";
var big_chartReference = FusionCharts("big_myChartId"+id);
if(big_chartReference != null){
big_chartReference.dispose();
}
var big_width = "1088";
var big_height = "604";
现在,下面是转换上面的图形SVG数据并添加到PDF的代码.
var elem_graph = $($('.big_Con_graph,big_Con_graph0')[count]).clone(true);
svgString = $(elem_graph).find("span").html();
var img = document.createElement('img');
var DOMURL = self.URL || self.webkitURL || self;
var svg = new Blob([svgString], {type: "image/svg+xml;charset=utf-8"});
var url = DOMURL.createObjectURL(svg);
img.onload = pdfAfterImageLoad(img,pdf,imgLoadSequence,DOMURL,totalReports,reportName);
img.src = url;
这是PDFAfterImageLoad函数的代码:
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var png = canvas.toDataURL("image/png");
pdf.addImage(png, 'PNG', leftmargin, 120, 485, 270);
我使用的是png,所以不能使用imagequality参数.
任何人都可以帮我减小文件大小吗?
解决方法:
您需要压缩正在生成的PDF中的图像.尝试使用Deflate.js和adler32cs.js,并在您使用的jsPDF和addImage函数中使用compress参数.例如:
var doc = new jsPDF('p', 'pt','a4',true);
确保将最后一个参数设置为“true”,请参阅:https://github.com/MrRio/jsPDF/blob/ddbfc0f0250ca908f8061a72fa057116b7613e78/jspdf.js#L146
通过它,您可以清楚地看到最后一个参数是用于启用压缩.
还使用:
pdf.addImage(png, 'PNG', leftmargin, 120, 485, 270,'','FAST');
代替
pdf.addImage(png, 'PNG', leftmargin, 120, 485, 270);
您可以选择NONE,FAST,MEDIUM和SLOW,以最适合您的方式.
内容总结
以上是互联网集市为您收集整理的javascript – 使用jspdf创建的pdf文件太大全部内容,希望文章能够帮你解决javascript – 使用jspdf创建的pdf文件太大所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。