一,wkhtmltopdf的用途
wkhtmltopdf可以直接把任何一個可以在瀏覽器中瀏覽的網頁直接轉換成一個pdf
說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest
對應的源碼可以訪問這里獲取: 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/sysop/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)