首先排除收费的,然后能支持高度自定义。主要需求就是在电商中订单面单打印插件中支持上打印HTML,而本地打印机是不能直接打印HTML的,我在网上找了很多解决方案,列举如下:
iText是操作PDF常用的工具,这个自定义的话需要自己设计freeMark文档,我们后端在处理PDF时有用到,这个也有好久没维护了,对样式支持不是太友好
wkhtmltopdf是我通过搜索出来大多数推荐的解决方案,效率比较好,但成出来不知道是因为样式缺少还是没有字体,导致出来的有一部分成像出来排版错乱,最终还是放弃了它
Chromium 的exe也是支持静默打印成pdf的,但是不支持自定义,成像效果是非常好的,为啥要说它呢,因为它使我产生了希望,我在GitHub上看到了一个go写的基于Chromium内核的HTML转PDF工具,既然他们能实现,那我也能实现吧,反复查看Chromium 开源API。终究还是没试出来
CEF是Chromium 内核源码,可以嵌入到一些应用程序中,但是我是用在Java上,所以找到了JCEF,这相当于是应用程序内嵌一个浏览器,支持HTML转PDF高度自定义化,优点就是完美还原了HTML,缺点就是效率较慢,使用内存较大。有较好的预算可以采用这个方案
遇到的问题就是JCEF缺少文档,然后就是怎么不将网页显示出来转换成PDF
我目前是采用了wkhtmltopdf外加JECF这两个一起进行的,但是产品说把平台HTML面单接口全改成PDF的,呜呜呜呜