FC2ブログ

Ghostscript

お久しぶりです。

ちょっとまとまった分量のGhostscriptのお勉強をしたのでUPしてみます。

GhostscriptLogo


Ghostscriptというのは、Adobe社の製品であるPostScriptインタプリタと互換性のあるフリー(オープンソース)なインタプリタです。(たぶん)

ページ記述言語ともいわれ、昔は印刷関係のデファクトスタンダードできな位置を占めていたPostScriptですが、それを解釈するインタプリタなどはAdobe社のれっきとした製品ですから非常にお高いため、オープンソースな互換インタプリタとして開発され、おもにラスターイメージの生成を担っていました。
ただ、PostScriptの後継(あるいは方言)として開発されたPDFの入出力をサポートしたあたりからPostScriptとPDFの相互変換プログラムのような利用も多くなってきました。

ところで、現在巷にあふれるフリーソフトたちのなかでベクトル画像としてのPDFやeps(これもPostScriptの方言ともいえる)などを「ベクトル画像のまま」相互変換できるソフトは非常に数が少なく、「相互変換」をうたっていても変換時にラスタライズされていることが多いです。

あまり解説しても仕方ないのでこのくらいにしますが最後に一言だけ。
有名な画像閲覧ソフトの中にはepsやpdfも開ける(中にはラスター画像への変換機能をもつ)ものがありますが、これらの中にはかなりの頻度でGhostscriptをバックエンドとして利用しているようです。

さて、かなり世の中の役に立っているGhostscriptですが、それでもフロントエンドのプログラムを使用して画像の変換などをしたときにおかしなファイルができたりする時があります。そんな時は、フロントエンドの問題なのかGhostscript自身の問題なのかが気になるところ。Ghostscriptが使えればテストできますが、私が探した限りではあまり詳しいGhostscriptの解説をしているサイトって見つからない...特にWindows版に関してはほとんどありません。

あんまり詳しくはできないかもだけど...gswin32cの使い方(で覚えたもの)をさらさらと書き出してみます。


先にお断りしますが今回はGhostscriptの性格上コマンドラインを使います。
苦手な方はまずコマンドラインの使い方を覚えていただいてからお願いします。m(_ _)m



まずインストールは...適当にお願いします。なお私はTeXユーザーなので奥村先生のTeX wikiのGhostscriptの項目を参考にgs9.04(日本語版)を利用しています。特にデフォルトからの変更をせずにインストールし、最後にPath環境変数だけ設定しました。
(これを書き出してからGhostscripe9.05が公開されていることに気付きまして下書きをしているうちに更新しました)

さて、さっそくGhostscriptをつかってみましょう。
と、行きたいところですが何もファイルがないと困ってしまうので、とりあえずGhostscriptに付属しているテスト用の「tiger.eps」を使いましょう。

Ghostscriptのインストール先が「C:\gs\gs*.**」(「*.**」はバージョン番号)のときは「C:\gs\gs*.**\examples\tiger.eps」にあります。適当なフォルダにコピーしておくのがいいでしょう。

これを使ってさっそく始めてみましょう。コマンドプロンプトでカレントディレクトリを、さっきの「tiger.eps」のあるディレクトリに移動して、次のように実行してみましょう

>gswin32c -h

これで以下のように表示されるはずです。

--------------------------------------------------
GPL Ghostscript 9.05 (2012-02-08)
Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
-dNOPAUSE no pause after page | -q `quiet', fewer messages
-gx page size in pixels | -r pixels/inch resolution
-sDEVICE= select device | -dBATCH exit after last file
-sOutputFile= select output file: - for stdout, |command for pipe,
embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PostScriptLevel3 PDF

(略)
--------------------------------------------------

もしうまく表示されない場合はインストールをし直すかPath環境変数を正しく設定してください。

さて本番です。(ぇ)

まずはさっきの「tiger.eps」をPDFに変換しましょう。そのためには次のように実行してください。

>gswin32c -sDEVICE=pdfwriter -sOutputFile=tiger.pdf tiger.eps
>gswin32c -sDEVICE=pdfwrite -sOutputFile=tiger.pdf tiger.eps
(10/12:Mongolian Chop Squad 様にご指摘いただきました。ありがとうございます。)

すると次のように表示される。


--------------------------------------------------
GPL Ghostscript 9.05 (2012-02-08)
Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
>>showpage, press to continue<<
--------------------------------------------------

「続けるにはenterを押せ」となっていますからEnterキーを押すと

--------------------------------------------------
GS>
--------------------------------------------------

と表示されますからここでは単に「quit」と実行して元のコマンドプロンプトに戻りましょう。

これで同じフォルダに「tiger.pdf」というpdfファイルができたはずです。Adobe Readerなどで確認すると以下のような虎の絵が描かれたPDFであることがわかります。

tiger.png
ちなみに上の画像ももとのepsファイルからGhostscriptで変換したものです。これには次のようにします。

>gswin32c -sDEVICE=pngalpha -sOutputFile=tiger.png tiger.eps

お分かりのように基本的なコマンドの使い方は

>gswin32c [オプション] [入力ファイル]

です。[オプション]には以下の二つが基本的です。

-sDEVICE=[出力デバイス]
-sOutputFile=[出力ファイル名]

です。ここで入力ファイルにはPostScriptファイル、epsファイル、PDFファイルの三種類を指定します。どれも代表的なベクトル画像のファイル形式です。
Ghostscriptの成り立ちの経緯上、入力ファイル形式としてはPostScript形式とその方言のみで、もう二つの系統であるSVGとWMF/EMFは利用できません。

[出力ファイル名]には出力ファイルを指定します。出力ファイルにはPDF、eps、PostScriptファイルに加えて多くのラスター画像フォーマットが指定できます。JPEG、PNG、TIFFに加えてPSD(PhotoShop Data)形式にも対応しています。
ここで出力ファイル名を指定しただけではGhostscriptは出力形式を特定できません。(出力形式を細かく設定できるためです)
そこで[出力デバイス]を指定します。デバイスという名前ですがプリンタなどのハードウェアではなく出力形式を指定する、と考えてもいいでしょう。

[出力デバイス]にはおもに以下のようなものが指定できますのでよく使うであろうものをまとめておきます。

DEVICEtable



単純に言えばこのデバイス名と出力ファイル名の拡張子を適切に定めればそれで終わりですが、もうちょっと賢く使うには以下のオプションが便利です。

-dBATCH
-r[解像度]

「-dBATCH」は指定するだけで、最後の「GS>」というプロンプトを表示させずに「quit」してくれるオプションです。ひとつのファイルを処理するだけならまだしも、バッチファイルなどを作成していくつかのファイルを処理する時にはいちいちquitするのはめんどうなのでバッチファイルを作る際には便利です。
「-r[解像度]」はラスター画像の解像度を指定するオプションです。特に指定しないと72dpiがデフォルトなので印刷用途には300から600dpiぐらいを指定して変換するとよいでしょう。



なんだか久しぶりの更新で二日もかけたせいかまとまりきっていませんがとりあえず今日のところはこの辺で。
スポンサーサイト



コメント

非公開コメント

gs9.06

gs9.06を使用しています.
tiger.epsをpdfに変換する際のコマンド
>gswin32c -sDEVICE=pdfwriter -sOutputFile=tiger.pdf tiger.eps
これをそのままタイプしてもエラーがでました.
どうやらpdfwriter → pdfwrite に直すことで動くようです.
細かいところですが、訂正もかねてご報告させていただきます.

Re: gs9.06

大変失礼しました。勢いで"r"が入ってしまったようです...(^_^;)
本文中でも訂正させていただきました。
ありがとうございます。
プロフィール

f(t)=k

Author:f(t)=k
ベクトル画像をもっと世に広めたい一般人その1

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR