ニュースサイトの記事には、期限が来ると削除されるものが割と多い。個人サイトやブログなども、知らない間に店じまいしてしまうことが多々あるので、見たそばからスクラップしておかないと、二度とその内容が見られなくなったりもする。
ためになるWebの内容については、Webの表示内容をコピーしてMacJournalにペースト。いわば「Webスクラップ帳」のように使っている。MacJournalはWebブラウザ上で選択した内容を(ほぼ)そのままMacJournal内のジャーナルエントリー(書類みたいなもの)にコピペできるのだ。これがたいへん便利で、日々活用している。
このWebスクラップを大量かつ一括でやりたいような場合には、コマンドライン(CLI:Command Line Interface)から使用できるWebレンダラーを併用し、AppleScriptでバッチ処理したりしている。選択中のMacJournalのジャーナルエントリーからURLを抽出し、そのURLの内容(HTML)をPDFにレンダリングして、PDFをMacJournalに貼り込むのだ。これ全部が自動で行われる。MacJournalのAppleScript対応機能に若干足りない点があるのでGUI Scriptingをまじえて書いてあるが、なんとか動いている。
このソリューションでは、ニュース記事のURLの一覧リストなどを作っておくと、その内容(HTML)を読み取って、勝手にページの内容をMacJournalに貼り込んでくれるのだ。
この仕組みをいろいろ有意義に使ってはいるものの……CLIのWebレンダラーが特定のページのHTMLを表示内容どおりにレンダリングできないケースがあることが分ってきた。
よく知られているMac OS X用のCLIベースのWebレンダラーには2つある。
1つは、日本産の「Coral」、もうひとつはスイス産の「wkpdf」だ。
■Coral
http://
■wkpdf
http://
ともにコマンドラインから呼び出すことができ、AppleScriptからもdo shell scriptコマンドで呼び出すことが可能だ。
いままでCoralを使ってきたのだが、Webブラウザの表示内容と、Coralでのレンダリング結果が著しく異なるケースが増えてきた。たとえば、Apple.comのトップページをレンダリングさせると、上のメニュー部分が表示されない。ブログ(AS Hole)をレンダリングさせてみると、表示とは似ても似つかない内容になったりする。
wkpdfも試してみたのだが、レンダリング結果はCoralと似たりよったりである。
一方で、Webレンダリングを行うのは何もローカルアプリだけの特権ではない。Webサービスでもいろいろ探してみると有為なものがあるのではないかと考えた。
探してみると、いくつも見つかったのだが……その中でも飛び抜けてすごかったのが、これだ。
http://
1ページまるまるイメージ化してくれるわけではない(長いページは途中で切られるようだ)のだが、Webブラウザの表示内容そのものが出てくる。キャプチャはAJAXのインタフェースで、そのページの一部を指定するようになっているのだが、秀逸なことに、Web上のアルバムサービスを利用するようになっており、ローカルにキャプチャした画像を置いておかなくてよい。ローカルに置いて整理することばかり考えていたので、ちょっとこれは目からウロコ体験だった。
ただ、よくよく考えれば……こうしたWebサービスも、詰まるところはCLIのWebレンダラーを用意しているわけで……Webブラウザの表示内容そのものをイメージ化できるCLI Webレンダラーが存在することを示していることになる。
そんな示唆を得て、ふたたびCLIレンダラーをひたすら調べていたら、wkpdfのオプションでCSSを考慮するオプションと、背景を描画するオプションが見つかった(ほかにもあるが割愛)。そこで、それらのオプションを指定しつつレンダリングさせてみたら…………ビンゴ! ちゃんとSafariの表示内容と同じ内容がPDFに書き出されることになった。
あとは、出力されるPDFが1枚ものの縦長のPDFになるとよいのだが……それについてはwkpdfの作者にリクエストを出していることとしよう。または、Safari自体にそのような機能がついてもよいわけで、そちらへの働きかけも行ってみることとしよう。