最新消息:

wkhtmltopdf一款能把HTML页面保存为PDF的软件

IT技术 ipcpu 1735浏览 0评论

wkhtmltopdf一款能把HTML页面保存为PDF的软件.md

一、简介

wkhtmltopdf 和 wkhtmltoimage 是一个使用 Qt WebKit 引擎做渲染的,能够把html 文档转换成 pdf 文档 或 图片(image) 的命令行工具。(强调一下:是 “命令行工具” )

支持多个平台,可在win,linux,os x 等系统下运行。

官方网站:https://wkhtmltopdf.org/
官方github:https://github.com/wkhtmltopdf/wkhtmltopdf

二、安装

官方在github上的2018年0.12.5版本中提供了RPM包安装方式,安装完就可以使用了

三、使用

使用也很简单,

命令格式:wkhtmltopdf [GLOBAL OPTION]... [OBJECT]...

wkhtmltopdf https://www.baidu.com  baidu.pdf

结果如下

没有中文,大部分原因是没有字体支持,可以先安装下微软雅黑试试。

yum install wqy-microhei-fonts -y


可以了。
关于字体,这里多插一嘴,CentOS中安装中文字体包的一般方法

yum install xorg-x11-font-utils fontconfig -y
#拷贝字体包到/usr/share/fonts并执行
mkfontscale && mkfontdir && fc-cache -fv

需要小语种字体的可以看下google noto。

四、wkhtmltopdf的缺点

大家都说好的东西未必是真好,接下来我们开始说缺点了

4.1 生成的pdf是白页

VUE等框架开始流行后,wkhtmltopdf用在vue项目上肯定是白页。
引起空白页的主要原因就是,使用webpack打包的项目,index.html页面在查看的时候是不显示具体页面内容的,具体内容都包含在一个js文件中,只有在访问到具体某个页面路由的时候相应的资源才会被调出来。但是wkthtmltopdf只能解析静态资源,不会去运行js文件。所以出来的是白页。同样的如果页面中的内容在页面开始渲染时才通过ajax请求从后台获取,也是无法被wkhtmltopdf获取。

这里介绍一个判断当前页面能否被wkhtmltopdf正常导出的一个方法:

将当前页面在浏览器中另存为,保存到本地,如果本地文件打开后是有内容的,那么wkhtmltopdf就能正常导出。因为这个工具只会解析html与CSS,并不会去运行js文件。

那怎么解决呢?
可以用SSR服务端渲染,或者在页面上放置一个按钮,将渲染完毕的HTML传回服务器端生成PDF。

参考资料

https://juejin.cn/post/6844903612993241101
https://www.jianshu.com/p/559c594678b6

转载请注明:IPCPU-网络之路 » wkhtmltopdf一款能把HTML页面保存为PDF的软件

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址