2008年12月9日火曜日

Linux環境でスクリーンショット






こちらを参考にして、khtml2png をCentos5.2にインストールしてみました。


http://d.hatena.ne.jp/holidayworking/20081124/1227501839


必要なソフトをインストール



yum install gcc gcc-c++ automake autoconf nano zlib zlib-devel
yum groupinstall "X Window System" "KDE (K Desktop Environment)"
yum install kdelibs kdelibs-devel
yum install Xvfb xorg "xorg-x11-font*"
yum install cmake





参考サイトには、書いてませんでしたが、


以下のソフトも必要ならいてれおいたほうがいいかも。



yum groupinstall "KDE Software Development"
yum install kdelibs4-dev





khtml2png は、yum でインストールできないので、ファイルをダウンロード



wget http://downloads.sourceforge.net/khtml2png/khtml2png-2.7.6.tar.gz?modtime=1224606904&big_mirror=0
tar zxvf khtml2png-2.7.6.tar.gz
cd khtml2png-2.7.6
./configure
make
make install



ここで ./configure の時に、 QT_INCLUDE_DIR を設定しろと、エラーが出た人は、


configure を以下のように書き換えてください。



vi configure

cmake -G KDevelop3 -D QT_INCLUDE_DIR:PATH=/usr/lib/qt-3.3/include .
cmake -D QT_INCLUDE_DIR:PATH=/usr/lib/qt-3.3/include .



これでたぶん、makeまでいけると思います。





インストールが一通り終わったら、Xvfbを起動する。



Xvfb :2 -screen 0 1024x768x24&
export DISPLAY=localhost:2.0


ここで、以下のようなエラーが出るかもしれないが無視する



Could not init font path element unix/:7100, removing from list!





ようやくスクリーンショットをとる準備ができたので


とりあえず、yahoo のトップページを見てみる



khtml2png2 --get-body http://www.yahoo.co.jp yahoo.png


なんかつらつらとエラーが出るが気にしない



DCOPClient::attachInternal. Attach failed Could not open network socket
kbuildsycoca running...
ScimInputContextPlugin()
~ScimInputContextPlugin()


f:id:bushimichi:20081208212326p:image:w400


対応外のブラウザだと、こんな風にyahooが見えるんですね。





その他、以下のようなメッセージも出たがとりあえず気にしない。



FreeFontPath: FPE "built-ins" refcount is 2, should be 1; fixing.
Could not init font path element unix/:7100, removing from list!





参考のサイトにも書いてありますが、


Cookieとか、Javascriptの設定で、うまくスクリーンショトが表示されない場合は


以下のファイルを修正する。



cd ~/.kde/share/config

vi kcookiejarrc

[$Version]
update_info=kcookiescfg.upd:kde2.2/b1,kcookiescfg.upd:kde3.1/cvs

[Cookie Dialog]
PreferredPolicy=2
ShowCookieDetails=false

[Cookie Policy]
CookieDomainAdvice=
CookieGlobalAdvice=Accept




vi khtml2pngrc

[HTML Settings]
AutomaticDetectionLanguage=0

[Java/JavaScript Settings]
PopupBlockerPassivePopup=false


意外と、HTMLのレンダリングがきれいで、崩れている部分も少ない気がします。


フォントとか、ちゃんといれたら文字ももっときれいに表示されるでしょう。


FireFoxとかでも、同様のスクリーンショットがとれるらしいですが


こっちのほうが、お手軽な気がします。





オプション一覧



khtml2png2 --help

Usage: khtml2png2 [Qt-options] [KDE-options] [options] url outfile

Render HTML to a PNG from the command line
Example:
khtml2png2 --width 800 --height 600 http://www.kde.org/ kde-org.png
or
khtml2png --auto ID_border http://www.kde.org/ kde-org.png

Generic options:
--help Show help about options
--help-qt Show Qt specific options
--help-kde Show KDE specific options
--help-all Show all options
--author Show author information
-v, --version Show version information
--license Show license information
-- End of options

Options:
-w, --width <width> Width of canvas on which to render html [800]
-h, --height <height> Height of canvas on which to render html [600]
--sw, --scaled-width <width> Width of image to produce []
--sh, --scaled-height <height> Height of image to produce []
-t, --time <time> Maximum time in seconds to spend loading page [30]
--auto <id> Use this option if you to autodetect the bottom/right border []
--get-body Autodected the body of the page (if width is not detected, use --width)
-b, --disable-window If set, don't show the window when doing rendering (can lead to missing items)
--disable-js Enable/Disable javascript (enabled by default)
--disable-java Enable/Disable java (enabled by default)
--disable-plugins Enable/Disable KHTML plugins (like Flash player, enabled by default)
--disable-redirect Enable/Disable auto-redirect by header <meta > (enabled by default)
--disable-popupkiller Enable/Disable popup auto-kill (enabled by default)

Arguments:
url URL of page to render
outfile Output file



スクロール画面も最後までスクリーン取ってくれるオプション、 --get-body が結構重宝するかも


Window環境でも、スクロールまで対応してスクリーンショット取ってくれるソフトは少ないからね。


指定の画像サイズで保存したい場合は、 -w -h --sw --sh あたりを駆使すればできそうな感じかな。








開発中のWebサイトの進捗を自動で画像に変換して、PDFとかに出力するとか


してみようかと考えています。


特に、画面イメージをみんなで共有する時に、


印刷したり、PowerPointに貼るのに、役に立ちそう。


あとサイトマップを作るときに、画面イメージをサムネイルとして


出力するのもいいかも。





0 件のコメント: