Ghostscript > 使い方

使い方

  ◆CONTENTS◆  

Ghostscript の起動コマンド

Microsoft Windows なら

です。

UNIX 互換 OS なら

$ gs

です。

サポートしているデバイスを調べるには

Ghostscript のサポートする出力形式を調べるには
Microsoft Windows では

と打ち込みます。

UNIX 互換 OS では

$ gs -h

と打ち込みます。

あるいは Ghostscript を起動して

GS>

のプロンプトで

GS>devicenames ==

と打ち込みます。Ghostscript のプロンプトから抜け出るには

GS>quit

と打ち込みます。

EPS から PNG への変換

EPS を α(アルファ)チャンネルを使った透過機能附きの PNG に 変換する場合には Microsoft Windows の
Windows PowerShell なら例えば

PS > rungs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pngalpha -dEPSCrop `
>> -r600 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 `
>> -sOutputFile="output.png" "input.eps"
>>

コマンド プロンプトなら例えば

>rungs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pngalpha -dEPSCrop ^
More? -r600 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 ^
More? -sOutputFile="output.png" "input.eps"

とします。
UNIX 互換 OS なら例えば

$ gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pngalpha -dEPSCrop -r600 \
> -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile="output.png" "input.eps"

とします。

EPS を256色 PNG に変換する場合には Microsoft Windows の
Windows PowerShell なら例えば

PS > rungs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=png256 -dEPSCrop `
>> -r600 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 `
>> -sOutputFile="output.png" "input.eps"
>>

とします。
コマンド プロンプトなら例えば

>rungs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=png256 -dEPSCrop ^
More? -r600 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 ^
More? -sOutputFile="output.png" "input.eps"

とします。
UNIX 互換 OS なら例えば

$ gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=png256 -dEPSCrop -r600 \
> -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile="output.png" "input.eps"

とします。

PS を GIF に変換するには

次のようにします。

gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- foo.ps | ppmtogif >foo.gif

デフォールトの解像度は 72×72 ですが,“-r600x600” のようなオプションで 解像度が変えられます。

gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- -r600x600 foo.ps | ppmtogif >foo.gif

周囲に余分な領域がある場合は,次のようにしてクロップします。

gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- foo.ps | pnmcrop | ppmtogif >foo.gif

上で使っている ppmtogif,pnmcrop は PBMPLUS や NetPBM というフリーソフトの 画像フォーマット変換パッケージに入っています。 この ppmtogif の部分を変えればいろいろな形式に変換できます。

PDF をアウトライン化するには

いったん eps2write (gs9.10 以前の場合は epswrite) を用いてアウトライン化 EPS を出力し,それを再度 PDF に変換します。
TeX2img (Win, Mac) の動作が参考になるかもしれません。

PDF への CJK フォントの非埋め込み制御

標準ではオプション “-sDEVICE="pdfwrite"” や ps2pdf.bat によって PDF を作成する場合,CJK フォントは全て埋め込まれます。
CJK フォントを埋め込まないように制御するには “/NeverEmbed” を使います。
例えば “foo.ps” という PostScript ファイルを PDF に 変換する場合に,/MS-Mincho (MS 明朝)を埋め込まないようにするためには
Windows PowerShell に次のようにコマンドを入力します。

C:\Users\$Env:USERNAME> rungs -dSAFER -q -dBATCH -dNOPAUSE `
>> -sDEVICE="pdfwrite" -dCompatibilityLevel="1.4" -sOutputFile="foo.pdf" `
>> -c ".setpdfwrite <</NeverEmbed [/MS-Mincho]>> setdistillerparams" `
>> -f "foo.ps"
>>

コマンド プロンプトの場合は次のようにコマンドを入力します。

>rungs -dSAFER -q -dBATCH -dNOPAUSE ^
More? -sDEVICE="pdfwrite" -dCompatibilityLevel="1.4" -sOutputFile="foo.pdf" ^
More? -c ".setpdfwrite <</NeverEmbed [/MS-Mincho]>> setdistillerparams" ^
More? -f "foo.ps"

ここで “/NeverEmbed” で指定するフォント名は PostScript ファイル内に 記述されているフォント名ではなく,実際に埋め込むフォント名でなければ 効果がありません。

また,lib/neverembed.ps に非埋め込み制御を行うフォント名をあらかじめ 記述しておいて,次のように
Windows PowerShell にコマンドを入力する方法もあります。

C:\Users\$Env:USERNAME> rungs -dSAFER -q -dBATCH -dNOPAUSE `
>> -sDEVICE="pdfwrite" -dCompatibilityLevel="1.4" -sOutputFile="foo.pdf" `
>> -c .setpdfwrite -f "neverembed.ps" -f "foo.ps"
>>

コマンド プロンプトの場合は次のようにコマンドを入力します。

>rungs -dSAFER -q -dBATCH -dNOPAUSE ^
More? -sDEVICE="pdfwrite" -dCompatibilityLevel="1.4" -sOutputFile="foo.pdf" ^
More? -c .setpdfwrite -f "neverembed.ps" -f "foo.ps"

lib/neverembed.ps には,例えば次のように記述しておきます。


%!
% neverembed.ps
%
<<
/NeverEmbed [
%/Times-Roman /Times-Bold
%/Times-Italic /Times-BoldItalic
%/Helvetica /Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique
%/Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique
%/Symbol /ZapfDingbats
/Ryumin-Light /HeiseiMin-W3
%/GothicBBB-Medium /HeiseiKakuGo-W5
/STSong-Light
%/STHeiti-Regular
/MSung-Light
%/MHei-Medium
/HYSMyeongJo-Medium
%/HYGoThic-Medium
/KozMinProVI-Regular /KozGoProVI-Medium /KozGoPro-Medium
/AdobeSongStd-Light
%/AdobeHeitiStd-Regular
/AdobeMingStd-Light /AdobeMyungjoStd-Medium
/KozMinPro-Regular-Acro /KozGoPro-Medium-Acro
/AdobeSongStd-Light-Acro /AdobeMingStd-Light-Acro /AdobeMyungjoStd-Medium-Acro
/STSongStd-Light-Acro /MSungStd-Light-Acro /HYSMyeongJoStd-Medium-Acro
/HeiseiMin-W3-Acro /HeiseiKakuGo-W5-Acro
/STSong-Light-Acro /MSung-Light-Acro /HYSMyeongJo-Medium-Acro
/MS-Mincho
%/MS-Gothic /HGGothicM
/NSimSun /MingLiU /BatangChe
]
/AlwaysEmbed [
%/Times-Roman /Times-Bold
%/Times-Italic /Times-BoldItalic
%/Helvetica /Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique
%/Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique
%/Symbol /ZapfDingbats
]
>> setdistillerparams

この lib/neverembed.ps への設定を ps2pdf でも有効に するためには,gs\gs$(rungs --version)\lib\ps2pdfxx.bat の記述内容の25行目

echo -c .setpdfwrite -f%1 >>"%TEMP%\_.at"2

REM echo -c .setpdfwrite -f%1 >>"%TEMP%\_.at"2

のようにコメントアウトし

echo -c .setpdfwrite -f neverembed.ps -f%1 >>"%TEMP%\_.at"2

を追加します。

さらに dvipdfmx が PostScript ファイルや EPS ファイルを PDF に変換する場合に lib/neverembed.ps への設定を有効にするためには

TeX Live の場合は dvipdfmx.cfg の記述内容の159行目

D  "rungs -q -dNOPAUSE -dBATCH -dEPSCrop -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=%v -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dAutoRotatePages=/None -sOutputFile='%o' '%i' -c quit"

に次のように “-f neverembed.ps ” を挿入します。

D  "rungs -q -dNOPAUSE -dBATCH -dEPSCrop -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=%v -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dAutoRotatePages=/None -sOutputFile='%o' -f neverembed.ps '%i' -c quit"

W32TeX の場合は $TEXMF/dvipdfmx/config/dvipdfmx.cfg の記述内容の33行目

D "rungs -q -dNOPAUSE -dBATCH -dEPSCrop -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dAutoRotatePages=/None -dCompatibilityLevel=%v -dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile='%o' -c .setpdfwrite -f '%i' -c quit"

に次のように “-f neverembed.ps ” を挿入します。

D "rungs -q -dNOPAUSE -dBATCH -dEPSCrop -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dAutoRotatePages=/None -dCompatibilityLevel=%v -dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile='%o' -c .setpdfwrite -f neverembed.ps -f '%i' -c quit"

PDF への欧文用フォントの埋め込み制御

Ghostscript では “/NeverEmbed”,“/AlwaysEmbed” を使って PDF への欧文用フォントの埋め込み制御が行えます。
“/NeverEmbed”,“/AlwaysEmbed” がうまく働かない場合は Resource/Init/gs_pdfwr.ps の記述内容を書き換えることで PDF への欧文用フォントの埋め込み制御を行います。

デフォルトでは PostScript Level 1 での基本14書体である Times ファミリ,Helvetica ファミリ,Courier ファミリ,Symbol,ZapfDingbats が 埋め込まれません。
しかし macOS を除く UNIX 互換 OS での Adobe Reader で Times-Italic や Times-BoldItalic を埋め込んでいない PDF を 表示すると,Times-Italic や Times-BoldItalic の部分が Italic 体ではなく Oblique 体(Slanted 体,斜体)で表示されてしまいます。 (Xpdf で表示すると PostScript Level 1 での基本14書体は埋め込まれていなくても 正確に表示されます。しかし Xpdf の場合は非埋め込みの中国語フォント・韓国語 [한국어]フォントが表示されず,非埋め込みの日本語フォントに 使われる書体にも不満がある方が多いとのこと。)
そこで Times-Italic と Times-BoldItalic だけを埋め込み,Times-Roman,Times-Bold,Helvetica ファミリ,Courier ファミリ,Symbol,ZapfDingbats だけを 埋め込まないようにすると,ほとんどの環境で PostScript Level 1 での基本14書体が 正確に表示されます。
このような設定にするには,Resource/Init/gs_pdfwr.ps の 記述内容の31–38行目のうち36行目を次のように変更してください。

/.a2112 [2 1 1 2] readonly def
/.a1111 [1 1 1 1] readonly def
/.standardfonts [
  /Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique
  /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique
  /Times-Roman /Times-Bold
%  /Times-Italic /Times-BoldItalic
  /Symbol /ZapfDingbats
] readonly def

また TeX ファイルから作った Times ファミリや Helvetica ファミリを埋め込んでいない PDF を Microsoft Windows の Adobe Reader/Acrobat で表示すると,Times ファミリや Helvetica ファミリでの 文字の一部(\={o} [ō],\b{b} [ḇ],\dj [đ],$\hbar$ など)が 正確に表示されません。
そこで Times ファミリと Helvetica ファミリは 埋め込み,Courier ファミリ,Symbol,ZapfDingbats だけを 埋め込まないようにすると,Microsoft Windows を含めたほとんどの環境で PostScript Level 1 での基本14書体が正確に表示されます。
このような設定にするには,Resource/Init/gs_pdfwr.ps の記述内容の31–38行目の うち35–36行目を次のようにコメントアウトしてください。

/.a2112 [2 1 1 2] readonly def
/.a1111 [1 1 1 1] readonly def
/.standardfonts [
  /Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique
%  /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique
%  /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic
  /Symbol /ZapfDingbats
] readonly def

関連リンク


Last-modified: 2019-05-04 (土) 00:25:38 (199d)