2013年03月02日

Debianでウェブサイトのスクリーンショットを撮る方法

備忘録として残しておきます。
Debian/GNU Linux(on お名前.com VPS)でウェブサイトのスクリーンショットを撮る方法です。

コマンドラインから操作できます。

 最後にバイナリ圧縮を展開する必要がありますが、バーチャルコンソールが用意されていてCDイメージからインストールできる環境にある人にはとても簡単です。
 グラフィカルデスクトップ環境をインストールできない、そもそもOSインストール時にオプションを指定できない時には、aptitude install wkhtmltopdfでwkhtmltoimage以外のものは入ります。ただ、フォントがあまり美しくないんでモナーフォントなどをインストールする必要がありますが、インストールしたとしてどうすればフォントを切り替えられるのかがまだわかりません。



1.OSインストール時にグラフィカルデスクトップ環境を入れる
aptitude install wkhtmltopdfでもいけないことはないですが、フォントのインストールとか考えるとこっちの方が楽

2.起動時にテキストモードで起動するようにする
root# vi /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

GRUB_CMDLINE_LINUX_DEFAULT="text"
に変更しgrubをアップデート。
root# update-grub

再起動してテキストモードで立ち上がっていればOK。
(cf.MiuxMiu

3.wkhtmltoimageをダウンロード&解凍・展開
user$ wget http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2
user$ tar -jxvf wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2

この時点での最新版(0.11)だと"QPixmap: Cannot create a QPixmap when no GUI is being used〜〜セグメンテーション違反です"といったエラーを吐く場合があるので、一つ前のStatic版(0.10)をダウンロードします。32bit版と64bit版があるので、自分の環境に合ったものをダウンロード。

4.解凍してできたバイナリをパスの通っているところへ移動
root# mv wkhtmltoimage-amd64 /usr/bin/wkhtmltoimage


5.とりあえずスクリーンショットを撮ってみる
user$ wkhtmltoimage http://www.yahoo.co.jp/ /var/www/yahoo.png


6.オプションを指定してみる
user$ wkhtmltoimage --crop-h 600 --crop-w 800 http://blog.cgi-bin.jp/ /var/www/cgi-binjp.png

--crop-hで画像の縦サイズ(ピクセル)、--crop-wで画像の横サイズ(ピクセル)を指定できます。
このオプションを指定しないと、そのページの全てを画像化します。
他のオプションについてはwkhtltoimage -Hを参照。
user $wkhtmltoimage -H
Name:
wkhtmltoimage 0.10.0 rc2

Synopsis:
wkhtmltoimage [OPTIONS]... <input file> <output file>

Description:
Converts an HTML page into an image,

General Options:
--allow <path> Allow the file or files from the specified
folder to be loaded (repeatable)
--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)
--cookie-jar <path> Read and write cookies from and to the
supplied cookie jar file
--crop-h <int> Set height for croping
--crop-w <int> Set width for croping
--crop-x <int> Set x coordinate for croping
--crop-y <int> Set y coordinate for croping
--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 (default is jpg)
--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)
--load-error-handling <handler> Specify how to handle pages that fail to
load: abort, ignore or skip (default
abort)
--disable-local-file-access Do not allowed conversion of a local file
to read in other local files, unless
explecitily 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)
--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)
-0, --disable-smart-width Use the specified width even if it is not
large enough for the content
--stop-slow-scripts Stop slow running javascripts (default)
--no-stop-slow-scripts Do not Stop slow running javascripts
(default)
--transparent Make the background transparent in pngs
--use-xserver Use the X server (some plugins and other
stuff might not work without X11)
--user-style-sheet <url> Specify a user style sheet, to load with
every page
--username <username> HTTP Authentication username
-V, --version Output version information an exit
--width <int> Set screen width (default is 1024)
(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)

Specifying A Proxy:
By default proxy information will be read from the environment variables:
proxy, all_proxy and http_proxy, proxy options can also by specified with the
-p switch

<type> := "http://" | "socks5://"
<serif> := <username> (":" <password>)? "@"
<proxy> := "None" | <type>? <sering>? <host> (":" <port>)?

Here are some examples (In case you are unfamiliar with the BNF):

http://user:password@myproxyserver:8080
socks5://myproxyserver
None

Contact:
If you experience bugs or want to request new features please visit
<http://code.google.com/p/wkhtmltopdf/issues/list>, if you have any problems
or comments please feel free to contact me: <uuf6429@gmail.com>


※今回実行のサンプルをhttp://www.cgi-bin.jp/cgi-binjp.pngに置いてあります。このブログのスクリーンショット(ちょっと前)です。

全般にわたり参考にさせていただいたエントリー -->
城好きwebプログラマーの生態メモ - 仕事編
posted by 鯖缶 at 18:51 | Comment(0) | TrackBack(0) | ただいま開発中 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック