CentOS7下用wkhtmltopdf 把网页转为PDF

{{ time }}

Step1 下载wkhtmltopdf. 打开 https://wkhtmltopdf.org/ ,找到CentOS7对应的版本的链接. 在Linux下, 以如下指令进行下载, 可以下载到~这个用户目录下

wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.i686.rpm

Step2 以如下指令运行rpm安装包

rpm -ivh ./wkhtmltox-0.12.5-1.centos7.x86_64.rpm 

这样, 可能会报错. 它会告诉你, 它需要什么倚赖包, 就像这样

error: Failed dependencies:
        xorg-x11-fonts-75dpi is needed by wkhtmltox-1:0.12.5-1.centos7.x86_64
        xorg-x11-fonts-Type1 is needed by wkhtmltox-1:0.12.5-1.centos7.x86_64

Step3 安装它需要的依赖包先, 以如下指令

yum install -y xorg-x11-fonts-75dpi xorg-x11-fonts-Type1

Step4 再次运行Step2中的安装命令, 等它安装好. 安装好以后Linux下运行wkhtmltopdf, 应该能看到一些帮助信息.

Step5 安装中文支持. 如果你用的是Windows电脑, 你可以打开C:\Windows\Fonts文件夹, 找一下里面的simsun.ttc字体文件.

把simsun.ttc先复制出来, 然后上传到你的CentOS的指定路径下, 上传好以后, simsun.ttc在你的服务器上的路径应该是这样的

/usr/share/fonts/chinese/TrueType/simsun.ttc

如果上面的路径, 是不存在的, 那么你要创建它.

Step6 以如下指令生成PDF文件

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

值得一提的是wkhtmltopdf目前是不支持flex布局的, 如果你用flex布局, 输出的pdf样式可能不正确.

如果你需要强制换页, 可以给那个div加如下CSS属性, 那么在这个DIV之前就会换页.

<div style="page-break-before:always;">
  123
</div>