webサイトのキャプチャーを撮るwebサービスは沢山あります。
一回、二回などの低頻度で使うならwebサービスを使えばいいのですが、
高頻度でプログラムからアクセスするとなると難しいです。

そこで、サーバーにインストールして使えるのは無いかと探し、
見つけたのがwkhtmltopdf(wkhtmltoimage)になります。

参考サイト

wkhtmltopdfのインストール

ダウンロード

wkhtmltopdfを下記サイトよりダウンロードしてインストールします。
DLsite:wkhtmltopdf.org/downloads.html

インストールするOSに合ったものをダウンロードしてください。
僕の環境は「CentOS6 64-bit」です。

wget https://bitbucket.org/wkhtmltopdf/wkhtmltopdf/downloads/wkhtmltox-0.13.0-alpha-7b36694_linux-centos6-amd64.rpm

インストール

rpm -ivh wkhtmltox-0.13.0-alpha-7b36694_linux-centos6-amd64.rpm

インストール時にエラーが出たら

error: Failed dependencies:
libpng is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64
libjpeg is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64
freetype is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64
icu is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64
fontconfig is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64
libX11 is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64
libXext is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64
libXrender is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64
xorg-x11-fonts-Type1 is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64
xorg-x11-fonts-75dpi is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64

yumでインストール。

yum -y install libpng libjpeg freetype icu fontconfig libX11 libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi

そして再度インストールコマンドを叩きます。

IPAフォントインストール

wget http://dl.ipafont.ipa.go.jp/IPAexfont/IPAexfont00301.zip
unzip IPAexfont00301.zip
mv IPAexfont00201 /usr/share/fonts
fc-cache -fv

フォントをインストールしていないとPDFで作成した時に文字化けが起こります。

コマンド叩いた時にエラーが出たら

コマンド例:wkhtmltopdf http://google.co.jp google.pdf

QXcbConnection: Could not connect to display
aborted

Xvfb (仮想ディスプレイバッファ)を入れる

yum install xorg-x11-server-Xvfb

コマンド例:xvfb-run wkhtmltopdf http://google.co.jp google.pdf

古いバージョンだとこのエラーは出ないです。(0.12.2.1では出ませんでした。)

WebページをPDFに変換

コマンド:xvfb-run wkhtmltopdf [変換するURL] [ファイルパスとファイル名]

Webページを画像に変換(キャプシャー画像作成)

コマンド:xvfb-run wkhtmltoimage [オプション] [変換するURL] [ファイルパスとファイル名]

コマンド例:xvfb-run wkhtmltoimage –quality 100 http://google.co.jp google.jpg

オプションは「wkhtmltoimage -H」で確認できます。

General Options:
–allow <path> Allow the file or files from the specified
folder to be loaded (repeatable)
–cache-dir <path> Web cache directory
–checkbox-checked-svg <path> Use this SVG file when rendering checked
checkboxes
–checkbox-svg <path> Use this SVG file when rendering unchecked
checkboxes
–cookie <name> <value> Set an additional cookie (repeatable),
value should be url encoded.
–cookie-jar <path> Read and write cookies from and to the
supplied cookie jar file
–crop-h <int> Set height for cropping
–crop-w <int> Set width for cropping
–crop-x <int> Set x coordinate for cropping
–crop-y <int> Set y coordinate for cropping
–custom-header <name> <value> Set an additional HTTP header (repeatable)
–custom-header-propagation Add HTTP headers specified by
–custom-header for each resource request.
–no-custom-header-propagation Do not add HTTP headers specified by
–custom-header for each resource request.
–debug-javascript Show javascript debugging output
–no-debug-javascript Do not show javascript debugging output
(default)
–encoding <encoding> Set the default text encoding, for input
-H, –extended-help Display more extensive help, detailing
less common command switches
-f, –format <format> Output file format
–height <int> Set screen height (default is calculated
from page content) (default 0)
-h, –help Display help
–htmldoc Output program html help
–images Do load or print images (default)
–no-images Do not load or print images
-n, –disable-javascript Do not allow web pages to run javascript
–enable-javascript Do allow web pages to run javascript
(default)
–javascript-delay <msec> Wait some milliseconds for javascript
finish (default 200)
–license Output license information and exit
–load-error-handling <handler> Specify how to handle pages that fail to
load: abort, ignore or skip (default
abort)
–load-media-error-handling <handler> Specify how to handle media files
that fail to load: abort, ignore or skip
(default ignore)
–disable-local-file-access Do not allowed conversion of a local file
to read in other local files, unless
explicitly allowed with –allow
–enable-local-file-access Allowed conversion of a local file to read
in other local files. (default)
–manpage Output program man page
–minimum-font-size <int> Minimum font size
–password <password> HTTP Authentication password
–disable-plugins Disable installed plugins (default)
–enable-plugins Enable installed plugins (plugins will
likely not work)
–post <name> <value> Add an additional post field (repeatable)
–post-file <name> <path> Post an additional file (repeatable)
-p, –proxy <proxy> Use a proxy
–quality <int> Output image quality (between 0 and 100)
(default 94)
-q, –quiet Be less verbose
–radiobutton-checked-svg <path> Use this SVG file when rendering checked
radiobuttons
–radiobutton-svg <path> Use this SVG file when rendering unchecked
radiobuttons
–readme Output program readme
–run-script <js> Run this additional javascript after the
page is done loading (repeatable)
–stop-slow-scripts Stop slow running javascripts (default)
–no-stop-slow-scripts Do not Stop slow running javascripts
–user-style-sheet <url> Specify a user style sheet, to load with
every page
–username <username> HTTP Authentication username
-V, –version Output version information and exit
–width <int> Set screen width, note that this is used
only as a guide line. Use
–disable-smart-width to make it strict.
(default 1024)
–window-status <windowStatus> Wait until window.status is equal to this
string before rendering page
–zoom <float> Use this zoom factor (default 1)

PHPで使用する場合

コマンドをexec()で使用してください。

まとめ

インストールさえ成功すればPHPからコマンドを打てば、
webサイトのキャプチャーを取得しそのまま画像の加工まで出来ます。

アンテナサイトなど登録サイトの画像キャプチャーを表示する時の取得にどうでしょうか?

webサイトをPDFファイルで作成も出来ますが、僕はまったく使ってないですね。
何かの使い方にあるのかな?

その他に参考になりそうなサイト

PHPでWEBサイトのスクリーンショット
wkhtmltopdf (Linux版)のインストール
LinuxコマンドからWEBサイトのスクリーンショットを作成
wkhtmltoimage でWebサイトのキャプチャを取得する