Windows 用 ghostscript で日本語 PDF を見る

[戻る]

もろもろの事情で Windows で PDF を画像フォーマットに変換する必要がありました。 安直に Windows 用 GhostScript (8.14) を使ってやろうと思ったのですが、 フォントの関係で変換できない PDF ファイルが多々ありました。

具体的には
AFPL Ghostscript 8.14 (2004-02-20)
Copyright (C) 2004 artofcode LLC, Benicia, CA.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>(****.pdf) run
Processing pages 1 through 1.
Page 1
Error: /undefined in /90msp-RKSJ-H
           〜以下略〜
とか
AFPL Ghostscript 8.14 (2004-02-20)
Copyright (C) 2004 artofcode LLC, Benicia, CA.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>(******.pdf) run
Processing pages 1 through 1.
Page 1
Substituting /Adobe-Japan1 for /MS-PGothic.
Error: /undefinedresource in --findresource--
Operand stack:
   --dict:7/7(L)--   TT2   1   --dict:5/5(L)--   --dict:5/5(L)--   MS-PGothic
--dict:10/12(ro)(G)--   --nostringval--   --dict:7/7(L)--   MS-PGothic   --dict:
7/7(L)--   Adobe-Japan1   CIDFont   Adobe-Japan1
Execution stack:
           〜以下略〜
などというエラーが図れます (一部伏字にしてます)。

いろいろ試した所、次のようにすればよさそうだということが分かりました。

まず、前者は 90msp-RKSJ-H というフォントがインストールしただけでは 無いことが原因です。これは こちら と同様 acro5-cmaps-2001.zip, adobe-cmaps-200204.zip という二つのファイルを入手し、 展開後、CMAP 以下のファイルを c:/gs/gs8.14/Resource/CMap にコピーして解決 しました。

続いて後者なのですが、こちらは MS-PGothic というフォントが無いことが原因です。 フォント自体は C:/windows/fonts の下に転がっています。 この中を覗くと、msgothic.ttc というファイルに

MS ゴシック & MS Pゴシック & MS UI Gothic 
という三つのフォントが入っているようです。 MS-PGothic はその中の二番目です。

という訳で、c:/gs/gs8.14/lib/cidfmap を開き
/MS-PGothic << /FileType /TrueType
/Path (msgothic.ttc)
/SubfontID 1 /CSI [(Japan1) 4] >> ;
と書くと文句を言われなくなりました。 要は 1 行目の/MS-PGothicがフォント名、 二行目のmsgothic.ttcがフォントが入っているファイル名、 三番面の 1 がフォントの番号 (0,1,2 の 1)、 という書式のようです。

まぁこう書いても、おそらく次に MS-Gothic が無いと言われますので、 その場合、上記三行目の 1 の代わりに 0 を書いたものを追加します。

こんな感じで文句が言われなくなるまで、フォントが入っているファイルを 調べ、その番号を調べて、cidfmap に追加していく作業を繰り返します。

例えばこんな感じ
/MS-Mincho << /FileType /TrueType
/Path (msmincho.ttc)
/SubfontID 0 /CSI [(Japan1) 4] >> ;

/MS-Gothic << /FileType /TrueType
/Path (msgothic.ttc)
/SubfontID 0 /CSI [(Japan1) 4] >> ;

/MS-PGothic << /FileType /TrueType
/Path (msgothic.ttc)
/SubfontID 1 /CSI [(Japan1) 4] >> ;

/HGPGothicE << /FileType /TrueType
/Path (HGRGE.ttc)
/SubfontID 1 /CSI [(Japan1) 4] >> ;

なんかもっといい解決手段がある気もするんですが...


2004.7