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