纯前端实现HTML页面打印PDF解决了中文问题、图片插入、文字换行、表格自动分页、页眉页脚的添加、行高问题(新的jspdf可能有其他的用法)、文字被截断的问题
工具/原料
jspdf.min.js
jspdf.plugin.autotable.js
方法/步骤
1、首先下载一个jspdf.min.js链接https://github.com/MrRio/jsPDF页面引用后就可以编写基本的内容了<scriptsrc="jspdf.min.js">
2、然后你的页面可能会有table把jspdf.plugin.autotable饱终柯肢.js下载下来链接https://github.com/simonbengtsson/jsPDF-AutoTa芟鲠阻缒bleautotable的用法请参照链接http://www.hangge.com/blog/cache/detail_2208.html
3、这个时候你会发现不支持中文首先jspdf中文解决办法参考链接https://blog.csdn.net/kunga0814/article/details/81869183
4、接下来是table中文解决办法由于antot瞢铍库祢able不支持中文他的源码里设置的默认字体是英文我们说湫鲆胪去源码中改成中文然后设置table中的字体参考链接http://www.hangge.com/blog/cache/detail_2213.html
5、接下来说下一个问题插入图片首先引用一个图屡阽咆忌片转base64的方法然后页面中就可以使用jspdf的图片基础用法doc.addImage()需要涛类唯鳙注意一点的就是,这个图片一定要在你的页面中用到了,也就是说你页面中有这个图片你才能在jpdf中使用。如果这个图片在你的页面中没有用到你可以把图片在页面中添加上,然后设置样式为display:none
6、换行问题doc.text(doc.splitTextToSize('内容',530),leftmargin,500);行高问题(lineHeight)doc.setLineHeightFactor(2)
7、页眉页脚的添加如果你是使用doc.addPage()增加的页面,那么你需要手动添加代码如果你是表格自动分页那么你需要修改一下源码
8、文字被截断的问题我用的是一个很笨的方法(没想到更好的解决办法)就是把文字内容用autotable显示出来因为他不会被截断他会自己跳到下一页