前言:
1、为了在服务端将html页面转成pdf,查了比较多的资料,说wkhtmltopdf是目前最好用的html转pdf的工具,经过验证,效果确实比其他工具好一些,但是并没有100%还原html页面的效果,bug频出,果断放弃。
2、后来偶然间发现chrome浏览器可以直接打印pdf,就去找相关的资料,发现除了手动操作,还可以通过命令直接利用chrome浏览器对pdf进行打印,对于服务器端来说简直是福音,经过验证,100%可以还原页面内容。
windows平台使用
1、个人使用(手动操作):chrome浏览器转pdf文件:
步骤:
a: chrome直接访问url
b:使用快捷键 ctrl+p,就可以将当前页面打印成pdf,里面的参数可以进行设置,然后打印就可以了
2、powershell命令执行(cmd中此命令不可执行,如果脚本中调用,只需要指定powershell执行就可以了)。
可以在服务器直接调用命令进行pdf的转化(也是我目前使用的)
chrome绝对路径+\chrome --headless --disable-gpu --no-sandbox --print-to-pdf='C:\Users\men\Desktop\test2.pdf(要转的pdf路径和名称)' https://blog.csdn.net/qq_14873105/article/details/51394026(下载的url链接)
liunix平台使用
命令行启动。
google-chrome --headless --disable-gpu --no-sandbox --print-to-pdf='/home/zs/test.pdf' https://blog.csdn.net/qq_14873105/article/details/51394026.html
备注:命令中一定要加上 --no-sandbox这个参数,不然会报错
未解决的问题(发现了但是我暂时没用,所以就没去解决,如果哪个大拿解决了,可以给评论上):下载url链接转pdf的时候,样式是一致的,但是pdf中的字体并不是一致的,我的无法打印楷体,目前猜测是因为liunix的chrome中没有改字体导致的(未进行验证)
删除页眉页脚,修改页边距
1、手动在chrome浏览器上下载pdf的话,可以直接进行按钮选择;
2、如果在命令行中设置的话,目前没有发现,不过有个变通的方法,在html页面中添加两个css样式就可以了。
@page {size: A4;margin: 0;} @media print {body {-webkit-print-color-adjust: exact;} .no-print {display: none;}}
以上代码的样式效果是:A4页大小, 无边距,可以打印背景图。
如果想打印其他样式,可以再去设置css样式。