HTML转PDF,动态分页生成PDF 可控分页打印

对于PDF品质要求较高的情况下,达到出版品质的PDF。以上方法。都欠缺一种能自主控制分页通用的方法:
对此花了一个多月业余时间写了一个bookjs组件:用于PDF预览/打印控制分页 。
预览支持chrome、firefox、Safar、移动端。
web前端打印生成PDF支持chrome和firefox
后端生成PDF支持:chrome headless和wkhtml2pdf

预览前端打印: [点击示例]

后端打印PDF:[已生成的PDF]

html转pdf方案有很多
比较下列几种方法的优缺点:
1.wkhtml2pdf工具转换(服务端)
2.前端web打印生成PDF(WEB客户端)
3.chrome headless模式打印生成pdf(服务端)

1.wkhtmltopdf: [传送门]
优点: 亚像素的尺寸,小于12px的字体大小显示的很好。可以生成的PDF内部导览书签。
缺点:
但其内核比较老。js,css有部分兼容问题,js需要polyfill。css部分属性不支持(比如竖排文字),在出现问题较难排查。

2.客户端web打印
优点:调试方便,和网页看到的一致,所见所得。
缺点:由于各浏览器差异,打印功能不是所有浏览器都支持的很好。生成的pdf无内部导览书签。
chrome 缺点:小于12px的中文字体,亚像素的显示差异。优点:打印选项无需用户干预
firefox: 缺点:打印选项需要用户正确选择,预览打印是分页页面高度差异。 优点:支持亚像素显示,12px以下字体大小
safari: 缺点:不支持无边距打印(大遗憾)。

3.chrome headless打印
优点:调试方便,和网页看到的一致,所见所得。
缺点:同客户端chrome打印

总结:
对于简单页面(比如合同报表),来说无论使用哪种方式影响都不大。
这些优缺点中:
12px字体显示和页面高度差异、css、js不兼容 几乎都可以通过非常规繁琐方法解决。

1.比较推荐WEB前端预览,后端chromeheadless打印生成。
2.wkhtml2pdf也是不错的选择,只是对开发者不太友好。生成的效果还是不错。

发表评论

电子邮件地址不会被公开。 必填项已用*标注