2010年04月23日

ghostscriptのGUIが欲しい

先日、mjyさんにThunarのアクション設定の仕込み方を教えていただいたが、そもそも何でこんなことになったかと考えたら、本来コマンドラインの入力で使うべきimagemagickをGUIで使いたかったからだと気がついた。Thunarのアクションにしておけば、右クリックで操作が可能になる。こういったGUI的な操作の方が、「一文字間違えたらおしまい」という恐怖と闘いながら(大げさな!)コマンドを入力するよりも、私にとっては楽なわけだ。
さて、同じような画像系の操作を要するタスクが続いているのだけれど、今度はベクターデータ(テキストデータ)を含む複数ページのPDFをビットマップ画像に変換する作業が発生した。単ページであればPDFをGIMPで開くかInkscapeで開いて適当な解像度で書き出してやればいい。しかし、何十ページもあるものをひとつひとつ手作業でそんなことをするわけにいかない。
このような作業も、十徳ナイフであるimagemagickでできるらしいのだが、さらに調べていると、そのバックで動いているghostscript(gs)を直接使うのがいいということがわかった。たとえば、pages.pdfという30頁のPDF文書を解像度250dpiでpage_1.pngからpage_30.png、までの30枚のPNG形式の画像ファイルに書き出すコマンドは、次のようになる。
$ gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pngmono -r250 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dMaxStripSize=8192 -sOutputFile=page_%d.png pages.pdf

これは解説サイトにあったコマンドのほぼ丸写しなので、私自身が理解していない引数があったりする。例えばAlphaBitsはアンチエイリアスの設定らしいのだけれど、どの程度が適当なのかもわかっていない。ともかくも、とりあえず、このコマンドで目的は達成できた。
確かに慣れればこのくらいのことは何ということはないのかもしれないし、面倒ならプログラマはスクリプトを書くのだろう。スクリプトの中で使うのならば、テキストコマンドで操作するプログラムも悪くないのかもしれない。けれど、端末を開くことに躊躇を覚えるような私にとって、これから何度も発生することが予想されるこの作業を、すべてこのコマンドでこなしていくのは、ちょっとしたプレッシャーになる。GUIが欲しい。

調べてみると、GhostScriptのGUIはいろいろ存在する。けれど、それらは私の求めているものではない。というのは、GhostscriptはベースがPDFのインタプリタなので、その第一の機能はPDFの表示。そこでそのGUIはPDFビューワということになる。つまりAdobe Reader類似のアプリで、Ubuntuの場合はEvinceがそれにあたる。Evince経由でビットマップ画像をつくることは、たとえばスクリーンショットを撮るなどすればできないわけはないのだけれど、それは筋がちがう。ghostscript本来の機能の多くは、こういったPDFビューワには実装されていないわけだ。
たとえば、上記のようなPDF→ビットマップ画像変換のGUIのイメージとしては、まずアプリを立ち上げると、入力ファイルPDFと出力先を選択(入力)できるようになっている。オプションとして、解像度、出力形式(png、jpeg、tiffなど)、アンチエイリアス深度などを指定するメニューも存在する。実行ボタンを押せば、バッチ作業が始まって、画像ファイルが得られる、といったもの。それほどたいそうなプログラムではないと思うのだけれど、いくら探しても出てこなかった。あと、これにPDFのプレビュー機能とか出力画像のサイズ調節とか、ghostscriptの機能で可能なものをどんどん盛り込めばさらに機能の高いアプリになるのだろうけれど、そこまでは求めない。単純なツールでいい。
しっかり探せばどこかで誰かがつくっているかもしれない。いつか見つかるといいなと思う。
posted by 松本 at 08:37| Comment(9) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
まあ、難しいでしょうね。
実際問題、GhostScript自体がコマンドラインがどうの、っつーよりマジな話プログラミング言語なんです。ある意味「アプリケーション」じゃない。
聞いた事あるかもしれませんが、要するにAdobeのPostScript互換の言語実装なんですよ。だからCとかBASICの仲間で(もっと言うとForthと言う言語の仲間)、殆どおっしゃってる事は「CのGUIが欲しい」と同値なんです。そんなのないでしょ?無いんですよ(笑)。
Posted by cametan at 2010年04月23日 16:42
cametanさん、コメントありがとうございます。ない、ですか。でも、ないものねだりでも欲しいものは欲しいですね。なにもGhostscriptで可能なことの全てを実装したアプリというのではなく、その中のほんの一つか二つの機能なので。それって「CのGUI」のレベルではないと思うんです(もっともそういうのもあればうれしいですけど)
Posted by Matsumoto at 2010年04月24日 09:37
まあ、「ghostscript本来の機能」が何を意味してるのかちょっと分からなかった、って事なんですけどね。
例えば、本文中のバッチスクリプト「だけで」解釈すれば単なるオプションだと思います。オプション入力するのがメンド臭い、ってのなら、GUI化する意義はあるとは思いますよ。
例えればWinFFみたいなものですよね。ffmpegの殺人的なオプションと引数指定をしたくないから、GUIで入力/選択/ボタンでやる形にして欲しい、と。それはアリだと思います。
恐らく、Python使ってる人辺りに頼めばすぐ作ってくれるんじゃないかしら?結局、UIから入力した情報を文字列として受け取って、適当に結合して端末に受け渡せばいいだけ、なんで、プログラミングって程じゃないとは思います。単なるラッパーですよね。
一方、GhostScriptの「本来の機能」とは、正確にはForthに似た逆ポーランド記法のプログラミング言語の事です。それこそ端末からgsと打てばインタプリタが起動すると思うんですが、見た目はヘンですが、文字通り「普通のプログラミング言語」です。四則演算も可能です。
% なんか弾かれるので省略
GS>1 2 add% 1 と 2を加算してスタックに積む
GSpstack% スタックの中身を表示する
3% 3 が表示される
GSclear% スタックの中身を棄てる
GS>
前者は単なる「オプション」で、「本来の」本来は後者ですね(笑)。こっちはGUI化する意味はない、ですね(笑)。
もし、後者の方をやりたい、ってのならEmacs辺りで動かした方が早いと思います。*.psと言うファイルを立ち上げれば自動でPostScriptモードに入るんで、好きなようにgsでプログラミング出来ますよ。
How to Edit PostScript
wwwnucl.ph.tsukuba.ac.jp/contents/member/inakura/ps/postscript.html
Posted by cametan at 2010年04月24日 14:10
Cametanさん、ありがとうございます。まあ、一般的な話としてはそれほど難しいことでもないのだろうという見当はつきますが、素人にとってはとてつもなく難しい話ですね。「単なるラッパー」をGUIで簡単につくるようなツールでもあればいいんでしょうけど、ここの「簡単」も、その人の力量によって意味がちがってくるでしょうしねえ。
誰かがつくってその辺で公開してるようなものでもないかなあと、虫のいいことを考えています。
本文中の「本来の機能は実装されていない」と、次の段落の間には、お察しのようにちょっと飛躍がありまして、「本来の機能ではもっといろんなことができる。その中で、私が欲しいのはPDFビュワーの部分ではなくて、画像変換の部分だけなのだけれど」というようなことを書いておくべきだったかも知れませんね。論理構造としては。まあ、前の方でそういうことを書いているので、通じるかなというのは、非論理的人間の思考回路でして。
Posted by Matsumoto at 2010年04月24日 14:40
う〜ん、ひょっとしてWindowsのGSViewってのが目的のアプリなんでは・・・?ちょっと良く分からないのですが。
GSView:
<a href="http://www.xucker.jpn.org/pc/gsview_install.html" rel="nofollow">www.xucker.jpn.org/pc/gsview_install.html</a>
これ、Ubuntu版が無い感じなんですけど・・・。ちょっと見てみて下さい。
Posted by cametan at 2010年04月25日 20:16
ここ
ubuntuforums.org/showthread.php?t=261535
見る限り、この辺
fr2.rpmfind.net/linux/RPM/rpmfusion/nonfree/fedora/12/x86_64/gsview-4.9-2.fc12.x86_64.html
からRPMを取ってきて、alienで変換したら上手くいった、みたいな話が書いてますね。
参考まで、に。
Posted by cametan at 2010年04月25日 20:26
Cametanさん、ありがとうございます。このgsview、ご紹介のサイトによれば、まさに私の求めているもののようですね。Ubuntuでの利用に関して、教えていただいた方向でちょっと試してみようと思います。また別の記事にするかもしれません。
Posted by Matsumoto at 2010年04月26日 16:43
ああ、見つかったんですね、ツール。
なんなら、なんか作りましょうか、とも思ったんですが。
Posted by かおりん at 2010年04月28日 02:59
かおりんさん、ありがとうございます。ちょっと手が空かずにまだ試していないので何とも言えないのですが、これでうまくいけばいいなと思っています。
Posted by Matsumoto at 2010年04月28日 14:31
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。