最近花了2天多的时间终于把HTML生成PDF弄好了。步骤如下:
1、首先是技术选型。看了好多都是收费的就不考虑了。
免费的有:
- jsPDF(前端生成,清晰度不高,生成比较慢)
- iText(严格要求html标签。这个好像也是收费的)
- wkhtmltopdf(简单、配置选项多、生成快、支持跨平台、也支持HTML生成图片)
因此选择wkhtmltopdf。
2、前期准备,首先需要下载wkhtmltopdf.exe(下载地址:https://wkhtmltopdf.org/downloads.html)阅读配置参数(https://wkhtmltopdf.org/usage/wkhtmltopdf.txt)
常用参数:
- -T 0 :设置上下左右margin-top=0(-B 0 -L 0 -R 0 -T 0,上下左右都设置一下)
- -s A4:设置A4纸大小,默认A4
- --disable-smart-shrinking:禁止缩放(不设置这个,生成的pdf会缩放)
- --zoom 1:设置缩放系数,默认为1。如果--disable-smart-shrinking设置了,--zoom就不用设置了。
- --cookie name value:设置cookie,如果下载的url需要登录(用cookie),那么这个参数很重要。
3、设置需要打印的页面(核心是分页)
A4纸大小:210mm×297mm,因此页面的每个div大小也是A4纸大小。
这里的页面设置很重要。另外,设置了分页的页码,示例如下:
<style> #view { height: 100%; margin: auto; padding: 0; width: 210mm; } /*设置A4打印页面*/ /*备注:由于@是否特殊符号,样式放在css文件中没问题,放在cshtml文件就不行了,需要@@。*/ @preview-item { size: A4; margin: 0; } @media print { .preview-item { margin: