如何在Linux上將HTML頁(yè)面轉(zhuǎn)化成Png圖片?
將一個(gè)特定頁(yè)面抓取為一張png圖片的最簡(jiǎn)單的方法是使用CutyCapt,這是一種在Linux下的方便地將HTML網(wǎng)頁(yè)轉(zhuǎn)化成矢量圖形和位圖圖像格式的命令行工具(比如,SVG, PDF, PS, PNG, JPEG, TIFF, GIF)。CutyCapt內(nèi)部使用WebKit渲染引擎來(lái)導(dǎo)出網(wǎng)頁(yè)渲染輸出到圖片文件中。它使用Qt構(gòu)建,CutyCapt實(shí)際上是一個(gè)也可以在Windows上使用的跨平臺(tái)應(yīng)用。(譯注:也有一個(gè)基于IE內(nèi)核的 IECapt 可以作此用途)
在本篇教程中,我會(huì)描述如何將一個(gè)HTML網(wǎng)頁(yè)使用CutyCapt轉(zhuǎn)化成png圖片。
在Linux上安裝 CutyCapt
這是在特定Linux發(fā)行版上的安裝命令。
在Debian, Ubuntu 或者 Linux Mint 安裝 CutyCapt
- $ sudo apt-get install cutycapt
在Fedora上安裝 CutyCapt
- $ sudo yum install subversion qt-devel qtwebkit-devel gcc-c++ make
- $ svn co svn://svn.code.sf.net/p/cutycapt/code/ cutycapt
- $ cd cutycapt/CutyCapt
在Fedora上編譯前,你需要在源碼上打上補(bǔ)丁。
使用文本編輯器打開(kāi)CutyCapt.hpp,并且加入在文件的開(kāi)頭加上下面的兩行。
- #include <QNetworkReply>
- #include <QSslError>
***,如下編譯并安裝CutyCapt。
- $ qmake-qt4
- $ make
- $ sudo cp CutyCapt /usr/local/bin/cutycapt
在CentOS 或者 RHEL安裝 CutyCapt
首先在你的Linux上啟用EPEL倉(cāng)庫(kù)。接著和在Fedora上一樣使用相同的步驟編譯安裝。
使用CutyCapt將 HTML 轉(zhuǎn)化成 PNG
將一個(gè)HTML頁(yè)面截圖成一個(gè)png圖片,只要使用下面的格式運(yùn)行CutyCapt。
- $ cutycapt --url=http://www.cnn.com --out=cnn.png
要將HTML頁(yè)面保存成不同的格式(比如,PDF),只要適當(dāng)?shù)刂付ㄝ敵鑫募?/p>
- $ cutycapt --url=http://www.cnn.com --out=cnn.pdf
下圖顯示了CutyCapt命令選項(xiàng)。
在一臺(tái)不含X的服務(wù)器上使用CutyCapt將HTML轉(zhuǎn)換成PNG
雖然CutyCapt是一個(gè)命令行工具,但是它需要X服務(wù)運(yùn)行。如果你嘗試在不含X服務(wù)的機(jī)器上運(yùn)行,你會(huì)得到下面這個(gè)錯(cuò)誤:
- cutycapt: cannot connect to X server :0
如果你要不含X的服務(wù)器上運(yùn)行CutyCapt,你可以在服務(wù)器上安裝Xvfb(輕量級(jí)“假的”X11 服務(wù))。這樣CutyCapt就不會(huì)報(bào)錯(cuò)了。
要在Debian, Ubuntu 或者 Linux Mint 上安裝Xvfb:
- $ sudo apt-get install xvfb
要在Fedora, CentOS 或者 RHEL 上安裝Xvfb:
- $ sudo yum install xvfb
在安裝Xvfb之后,接下來(lái)像這樣運(yùn)行CutyCapt。
- $ xvfb-run --server-args="-screen 0, 1280x1200x24" cutycapt --url=http://www.cnn.com --out=cnn.png
它首先會(huì)運(yùn)行Xbfb服務(wù),接著使用CutyCapt來(lái)抓取網(wǎng)頁(yè)。因此它可能會(huì)花費(fèi)更長(zhǎng)的時(shí)間。如果你想要截圖多張截圖,你可能事先需要將Xvfb作為后臺(tái)守護(hù)進(jìn)程啟動(dòng)。
via: http://xmodulo.com/2014/02/convert-html-web-page-png-image-linux.html