swdsyu 在 淺談Ruby產生PDF的套件-Prawn 一文裡,
提及用ruby產生pdf檔的議題,
在此介紹個linux上的現成轉html成pdf的工具。
這令人驚奇可以在命令列就做出PDF的軟體是 wkhtmltopdf。
在Ubuntu及ArchLinux上直接下指令安裝即可,
而Fedora 沒有直接現成的rpm檔,
可以到:
http://repos.amberdms.com/pub/amberdms/linux/fedora/13/amberdms-os/SRPMS/
抓SRPM檔來重build一個RPM檔。
或直接用已經build好的RPM檔來安裝:
http://repos.amberdms.com/pub/amberdms/linux/fedora/13/amberdms-os/i386/RPMS/
在我那沒裝任何Xorg的環境下,
安裝這wkhtmltopdf 會需以下相關的開發套件安裝:
# pacman -S wkhtmltopdf
resolving dependencies...
looking for inter-conflicts...
Targets (40): libjpeg-8.0.2-1 libtiff-3.9.4-1 libpng-1.4.4-1 libmng-1.0.10-3 dbus-core-1.4.0-1 xcb-proto-1.6-1 xproto-7.0.18-1 libxdmcp-1.0.3-1 libxau-1.0.6-1 libxcb-1.7-1 kbproto-1.0.5-1 libx11-1.3.5-1 dbus-1.4.0-1 freetype2-2.4.3-1 fontconfig-2.8.0-1 libdrm-2.4.21-2 xextproto-7.1.2-1 libxext-1.1.2-1 xf86vidmodeproto-2.3-1 libxxf86vm-1.1.0-1 fixesproto-4.1.1-1 libxfixes-4.0.5-1 damageproto-1.2.0-1 libxdamage-1.1.3-1 libgl-7.8.2-3 libice-1.0.6-1 libsm-1.1.1-1 renderproto-0.11.1-1 libxrender-0.9.6-1 randrproto-1.3.1-1 libxrandr-1.3.0-1 videoproto-2.3.1-1 libxv-1.0.5-1 inputproto-2.0-1 libxi-1.3.2-1 alsa-lib-1.0.23-1 xdg-utils-1.0.2.20100618-1 hicolor-icon-theme-0.12-1 qt-4.7.0-4 wkhtmltopdf-0.9.9-1
Total Download Size: 32.19 MB
Total Installed Size: 147.02 MB
使用的方式也很簡單,
1.用wget 下載指定的網頁,
wget -p http://www.eff.org
$ find
.
./www.eff.org
./www.eff.org/files
./www.eff.org/files/css
./www.eff.org/files/css/3317ce57622e8cc117dbbb69537e8b53.css
./www.eff.org/files/frontpages
./www.eff.org/files/frontpages/back-door.png
./www.eff.org/files/frontpages/coica-victory.png
./www.eff.org/files/frontpages/Copyright-trolls_0.jpg
./www.eff.org/index.html
./www.eff.org/robots.txt
下載了以上的檔案。
2.進入該網頁的目錄所在,
cd www.eff.org
並執行
$ wkhtmltopdf index.html eff.pdf
Xlib: extension "RANDR" missing on display ":1.0".
Loading page (1/2)
Printing pages (2/2)
Done
但前提似乎是要有X的界面啟動,
而從X界面下的console終端機執行才會成功。
這是做出一個eff.pdf 實際的結果。
3.當然,英文的一定沒問題,中文就……
但令人訝異的是,中文顯示也沒問題!
以wget -p http://www.ithome.com.tw/
然後做出了這個 ithome.pdf 結果。
4.小結:
打開來看這些pdf成品,
中文無亂碼,
且中英文字都可被搜尋,
只是url的連結並沒做出來。
若是flash一定出不來,
若網頁原版面的結構複雜,
畫出來的pdf一定無法像原貌般的呈現。
目前測試,
似乎一定要在X執行情況下,
在其中所開的終端機裡的命令列才能執行,
不然會出現:
wkhtmltopdf: cannot connect to X server
之錯誤訊息,
不曉得是否能在遠端的連結就做出來呢?