2012年2月25日土曜日

Ghostscript で SVG 生成

http://www.brainsellers.com/mt/cgi-bin/mt-search.cgi?blog_id=4&tag=Ghostscript&limit=20

ベクトル画像を描く際にもっともよく使うのが
SVG 系のオープンなフォーマット と
PDF, EPS, PS 等の Addobe の息のかかったフォーマットの
おもに2種類である。

その際に問題となるのが両者間の変換である。

PDF-EPS 間の変換は Ghostscript で変換できほとんど問題は生じないが、
例えば Inkscape などを用いた
PDF -> SVG 変換では、フォントデータが失われ黒く四角いオブジェクトに置換されてしまう。

この問題を解消するためには PDF, EPS系のフォーマットを
フォントの扱いを含めサポートしているエディタが必要だが、
実質 Adobe Illustrator ぐらいしかない。

この問題はGhostscript を用いて svg を出力することで
回避できるのではないだろうか

ということでやってみる。

gs をコマンドラインで用いる場合次のように使う


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
Default output device: x11alpha


コマンドライン上でヘルプ

gs -h

をすることでこうした内容を読むことができる。

実際に pdf -> svg への変換は次のように行う、

gs -dSAFRE -dBATCH -dNOPAUSE -sDEVICE=svg -sOutputFile=gsSvgTest.svg gsSvgTest.pdf

http://www.brainsellers.com/mt/cgi-bin/mt-search.cgi?blog_id=4&tag=Ghostscript&limit=20

ここで用いたオプション-dSAFER は次のようなものである。

http://www.iss.net/security_center/reference/jp/vuln/ghostscript-dsafer-read-files.htm

Ghostscript は、Linux ベースのオペレーティング システムに対応する PostScript インタープリタです。 Aladdin Enterprises Ghostscript バージョン 4.3 および 5.5 では、ローカルの攻撃者がシステム上で任意のファイルを読み取る可能性があります。 ローカルの攻撃者は、不正な postscript コードからユーザーを保護することを目的とする -dSAFER オプションを使って印刷要求を送信し、プリント スプーラの権限でシステム上にある任意のファイルを読み取ることができます。

0 件のコメント:

コメントを投稿