centos8平台使用wkhtmltopdf实现html网页转pdf
一,wkhtmltopdf的用途
wkhtmltopdf可以直接把任何一个可以在浏览器中浏览的网页直接转换成一个pdf
说明:刘宏缔的架构森林是一个专注架构的博客,
网站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/21/centos8linux-yong-wkhtmltopdf-shi-xian-html-wang-ye-zhuan-pdf/
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,下载和安装wkhtmltopdf
1,官网地址:
https://wkhtmltopdf.org/downloads.html
2,下载:
[root@blog source]# wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm
3,安装
[root@blog source]# rpm -ivh wkhtmltox-0.12.5-1.centos8.x86_64.rpm error: Failed dependencies: xorg-x11-fonts-75dpi is needed by wkhtmltox-1:0.12.5-1.centos8.x86_64 xorg-x11-fonts-Type1 is needed by wkhtmltox-1:0.12.5-1.centos8.x86_64
报错了,先把有依赖的两个包安装好:
[root@blog source]# dnf install xorg-x11-fonts-75dpi [root@blog source]# dnf install xorg-x11-fonts-Type1
再次安装就OK了
[root@blog source]# rpm -ivh wkhtmltox-0.12.5-1.centos8.x86_64.rpm Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:wkhtmltox-1:0.12.5-1.centos8 ################################# [100%]
三,查看版本和帮助
1,查看版本
[root@blog source]# /usr/local/bin/wkhtmltopdf --version wkhtmltopdf 0.12.5 (with patched qt)
2,查看帮助
[root@blog source]# /usr/local/bin/wkhtmltopdf --help
3,查看手册
[root@blog source]# man wkhtmltopdf
四,wkhtmltopdf的用法例子:
1,转本地页面
[root@blog ~]# /usr/local/bin/wkhtmltopdf /home/lhdop/work/jianli.html /home/webop/work/jianli.pdf Loading pages (1/6) Counting pages (2/6) Resolving links (4/6) Loading headers and footers (5/6) Printing pages (6/6) Done
2,转线上的页面:
[root@blog ~]# /usr/local/bin/wkhtmltopdf http://www.baidu.com /home/webop/work/baidu.pdf
五,wkhtmltopdf使用中遇到的问题
1,问题:部分文字不能正常显示?
解决:
把windows下字体保存到/usr/share/fonts/ 目录下
[root@blog source]# cp /home/webop/work/simsun.ttc /usr/share/fonts/
2,问题:文字的字体显示不正常,有的是黑体,有的是宋体
解决:
在head中指定字体的路径,
@font-face{font-family: "宋体";src:url("/usr/share/fonts/simsun/simsun.ttc");}
在页面上的元素中指定相应的字体,例:
<body style='font-family:"宋体";'>
然后再转换即可
六,一个完整的例子:
html代码:
<html> <head> <meta charset="utf-8" /> <meta name="renderer" content="webkit"> <title>测试pdf页面生成</title> <style> @font-face{font-family: "宋体";src:url("/usr/share/fonts/simsun/simsun.ttc");} @font-face{font-family: "黑体";src:url("/usr/share/fonts/simhei/simhei.ttf");} </style> </head> <body style='font-family:"宋体";'> <table style="width:1024px;margin: auto;background: #eeeeee;"> <tr><td>姓名:</td><td>老刘</td></tr> <tr><td>照片:</td><td><img src="https://imgs-qn.qiniuyun.com/ware/sowhatimg/ware/orig/2/35/35158.jpg" /></td></tr> <tr><td>描述:</td><td><div style='width:800px;word-wrap:break-word;line-height:40px;font-family:"黑体";'> Palm Web OS是一款基于Linux内核的嵌入式操作系统。该平台于2009年CES大会上正式发布,第一款搭载Web OS的手机Plam Pre于同年6月发布。
当年iPhone 3GS的“劲敌”,Palm pre手机。滑盖Qwerty全键盘,支持多点触控的3.1英寸TFT屏幕,
采用了600Mhz的ARM Cortex A8 CPU,“轨迹球”功能类似iPhone的Home键。 </div> </td></tr> </table> </body> </html>
pdf效果图:
可以看到pdf中的字体是按照我们指定的字体进行了渲染
七,查看centos的版本
[root@blog ~]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)