JSP页面导出PDF格式文件基本在前端页面可以全部完成
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.debug.js"></script>
添加下载链接的点击事件
<script type="text/javascript">
???var downPdf = document.getElementById("downLoad");
???downPdf.onclick = function() {
???????downPdf.parentNode.removeChild(downPdf);
???????html2canvas(document.body, {
???????????onrendered:function(canvas) {
???????????????var contentWidth = canvas.width;
???????????????var contentHeight = canvas.height;
???????????????//一页pdf显示html页面生成的canvas高度;
???????????????var pageHeight = contentWidth / 592.28 * 841.89;
???????????????//未生成pdf的html页面高度
???????????????var leftHeight = contentHeight;
???????????????//pdf页面偏移
???????????????var position = 0;
???????????????//a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
???????????????var imgWidth = 595.28;
???????????????var imgHeight = 592.28/contentWidth * contentHeight;
???????????????var pageData = canvas.toDataURL(‘image/jpeg‘, 1.0);
???????????????var pdf = new jsPDF(‘‘, ‘pt‘, ‘a4‘);
???????????????//有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
???????????????//当内容未超过pdf一页显示的范围,无需分页
???????????????if (leftHeight < pageHeight) {
???????????????????pdf.addImage(pageData, ‘JPEG‘, 0, 0, imgWidth, imgHeight );
???????????????} else {
???????????????????while(leftHeight > 0) {
???????????????????????pdf.addImage(pageData, ‘JPEG‘, 0, position, imgWidth, imgHeight)
???????????????????????leftHeight -= pageHeight;
???????????????????????position -= 841.89;
???????????????????????//避免添加空白页
???????????????????????if(leftHeight > 0) {
???????????????????????????pdf.addPage();
???????????????????????}
???????????????????}
???????????????}
???????????????pdf.save(‘content.pdf‘);
???????????}
???????})
???}
</script>
<a id="downLoad" href="javascript:void(0)">打印档案</a>
最终生成文件
JSP页面导出PDF格式文件
原文地址:https://www.cnblogs.com/xiao1993/p/10259159.html