2012/08/02

將 HTML 轉成 PDF 檔 (支援中文)

在 Ubuntu 上將 HTML 轉成 PDF 檔非常簡單。用 Firefox 或 Chromium 打開這個 HTML 檔 (或連上該網站),然後「列印至 PDF 檔案」即可。不過,你若在其他平台,或想自動完成這項工作,就比需要有其他工具了。

網路上這類工具還不少,不過不是安裝複雜就是不支援中文。在這裡推薦一套安裝簡單又好用的轉換工具,wkhtmltopdf

安裝有多簡單?下載之後解開即可 (我只在 Ubuntu 上試過)。

有多好用?這類轉換工具對 HTML 檔的處理能力參差不齊,若加上需要支援中文,就更難找到讓人滿意的解決方案。但 wkhtmlpdf 是以 WebKit/QT 為核心,而 WebKit 是 Apple Safari 和 Google Chrome 的網頁處理器,所以處理能力毋庸置疑。

最簡單的執行範例:
wkhtmltopdf http://news.chinatimes.com/ news.pdf
若你想加上封面、頁首、頁尾等也可以,請自行參閱 wkhtmltopdf -H 的說明。

新版 Ubuntu 使用者注意事項

直接下載上述網頁編譯完成的 binary 在較新版本的 Ubuntu,譬如 12.04,似乎無法執行:
QSslSocket: cannot call unresolved function SSLv23_client_method4%
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
解決辦法是下載 source 自己編譯。不要擔心,編譯非常簡單:
$ sudo apt-get install qt4-dev-tools
$ wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1.tar.bz2
$ tar xvjf wkhtmltopdf-0.11.0_rc1.tar.bz2
$ cd wkhtmltopdf-0.11.0_rc1/
$ qmake && make
$ sudo apt-get make install

Keywords: html2pdf, html-to-pdf, web2pdf, web-to-pdf