- 追加された行はこの色です。
- 削除された行はこの色です。
[[Ghostscript]] > 使い方
*使い方 [#s2e0cdb0]
&color(White,#5F2F2F){ ''◆CONTENTS◆'' };&br;
#contents
**Ghostscript の起動コマンド [#se3b8ef2]
Microsoft Windows なら
-TeX Live, W32TeX に付属の rungs の場合は
-TeX Live に付属の rungs の場合は
rungs
-64-bit 版の Ghostscript の場合は
gswin64c
-32-bit 版の Ghostscript の場合は
gswin32c
です。
UNIX 互換 OS なら
$ gs
です。
**サポートしているデバイスを調べるには [#d708538b]
Ghostscript のサポートする出力形式を調べるには~
Microsoft Windows では
-TeX Live, W32TeX に付属の rungs の場合は
-TeX Live に付属の rungs の場合は
rungs -h
-64-bit 版の Ghostscript の場合は
gswin64c -h
-32-bit 版の Ghostscript の場合は
gswin32c -h
と打ち込みます。
UNIX 互換 OS では
$ gs -h
と打ち込みます。
あるいは Ghostscript を起動して
GS>
のプロンプトで
GS>devicenames ==
と打ち込みます。Ghostscript のプロンプトから抜け出るには
GS>quit
と打ち込みます。
**EPS から PNG への変換 [#g1adcf94]
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 に変換するには [#p31562f1]
次のようにします。
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 をアウトライン化するには [#b7g015t4]
いったん eps2write (gs9.10 以前の場合は epswrite) を用いてアウトライン化 EPS を出力し,それを再度 PDF に変換します。~
[[TeX2img]] (Win, Mac) の動作が参考になるかもしれません。
**PDF への CJK フォントの非埋め込み制御 [#zd1cf8d8]
標準ではオプション “-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:http://git.ghostscript.com/?p=ghostpdl.git;a=blob;f=lib/ps2pdfxx.bat;hb=HEAD]] の記述内容の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:http://www.tug.org/svn/texlive/trunk/Master/texmf-dist/dvipdfmx/dvipdfmx.cfg?view=markup]] の記述内容の[[152行目:https://tug.org/svn/texlive/trunk/Master/texmf-dist/dvipdfmx/dvipdfmx.cfg?view=markup#l152]]
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"
**PDF への欧文用フォントの埋め込み制御 [#y3b70de6]
Ghostscript では “/NeverEmbed”,“/AlwaysEmbed” を使って
PDF への欧文用フォントの埋め込み制御が行えます。~
“/NeverEmbed”,“/AlwaysEmbed” がうまく働かない場合は
[[Resource/Init/gs_pdfwr.ps:http://git.ghostscript.com/?p=ghostpdl.git;a=blob;f=Resource/Init/gs_pdfwr.ps;hb=HEAD]] の記述内容を書き換えることで
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行目:http://git.ghostscript.com/?p=ghostpdl.git;a=blob;f=Resource/Init/gs_pdfwr.ps;hb=HEAD#l31]]のうち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行目:http://git.ghostscript.com/?p=ghostpdl.git;a=blob;f=Resource/Init/gs_pdfwr.ps;hb=HEAD#l31]]の
うち[[35–36行目:http://git.ghostscript.com/?p=ghostpdl.git;a=blob;f=Resource/Init/gs_pdfwr.ps;hb=HEAD#l35]]を次のようにコメントアウトしてください。~
/.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
*関連リンク [#we8f22aa]
-[http://acetaminophen.hatenablog.com/archive/category/Ghostscript "Ghostscript" - 記事一覧 - Acetaminophen’s diary]
--[[Ghostscript のこと(1):アウトライン化の詳細:http://acetaminophen.hatenablog.com/entry/2014/10/16/110255]]
--[[Ghostscript のこと(2):不具合?:http://acetaminophen.hatenablog.com/entry/2014/10/17/145447]]
--[[Ghostscript のこと(3):新しいアウトライン化の知見:http://acetaminophen.hatenablog.com/entry/2015/03/14/221359]]
-[[GhostScriptを使ってPDFファイルを印刷する:https://qiita.com//Masahiro-Ito/items/ffea4838f57bb3de5232]]