Time to Read

3分

Gtk::MozEmbed を使う

上記のサイトを参考に準備。環境は例によってUbuntu 64bit(Lucid Lynx)。

libgtk-mozembed-ruby をインストール。また、キャプチャを取る関係で、 libgdk-pixbuf2-ruby 、仮想フレームバッファ – XvfcXvfbと、それを動かすためdaemonを入れておく。

1
sudo aptitude install xvfb daemon libgtk-mozembed-ruby libgdk-pixbuf2-ruby

あとは、こんな感じのコマンドです。ここのブロックの操作は、デスクトップでは不要です。

1
2
3
sudo daemon -X "/usr/bin/Xvfb :1 -screen 0 1024x768x24" --name Xvfb
# FYI 停止 sudo daemon --stop --name Xvfb
export DISPLAY=:1.0

MozSnapshooterのソースをMozEmbedサンプルサイトから取ってきます。(何か消えそうなのでミラー: gist: 861565 後述の変更を適用済みです)このままでは動かないので、以下を修正。

1
2
3
4
23c23
<     self.child.chrome_mask = Gtk::MozEmbed::ALLCHROME
---
> #    self.child.chrome_mask = Gtk::MozEmbed::ALLCHROME

あと、以下の修正をしとくと、スクリーンショットが綺麗だったり、URL指定できたり、何かと便利になります。

1
2
3
4
5
6
7
8
9
10
26c26
<     self.child.location = "http://www.ruby-lang.org"
---
>     self.child.location = ARGV[0] || "http://www.ruby-lang.org"
57,58c57,58
<     pixbuf = pixbuf.scale(320, 200, Gdk::Pixbuf::INTERP_HYPER)
<     pixbuf.save("screenshot-thumb.png","png")
---
>     pixbuf = pixbuf.scale(500, 400)
>     pixbuf.save("screenshot-thumb.#{Time.now.strftime('%Y%m%d')}.#{$$}.png","png")

あとはこんな感じで起動。

1
ruby moz-snapshooter.rb http://udzura.jp

screenshot-thumb.20100930.28745

あと、なぜかサイトによってはいつまでもスクリーンショットが取れない場合があります。。。後述するwebkitなら大丈夫なのかしら。

次回予告

今回はFirefoxでのスクリーンショットを保存しました。

次回はwebkitでのスクリーンショットを撮りたい感じです。

上記サイトが参考になる……?