Ghostscript > 使い方
◆CONTENTS◆
Microsoft Windows なら
rungs
gswin64c
gswin32c
です。
UNIX 互換 OS なら
$ gs
です。
Ghostscript のサポートする出力形式を調べるには
Microsoft Windows では
rungs -h
gswin64c -h
gswin32c -h
と打ち込みます。
UNIX 互換 OS では
$ gs -h
と打ち込みます。
あるいは Ghostscript を起動して
GS>
のプロンプトで
GS>devicenames ==
と打ち込みます。Ghostscript のプロンプトから抜け出るには
GS>quit
と打ち込みます。
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"
とします。
次のようにします。
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 の部分を変えればいろいろな形式に変換できます。
いったん eps2write (gs9.10 以前の場合は epswrite) を用いてアウトライン化 EPS を出力し,それを再度 PDF に変換します。
TeX2img (Win, Mac) の動作が参考になるかもしれません。
標準ではオプション “-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 の記述内容の152行目
D "rungs -q -dSAFER -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 -dSAFER -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"
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