超漢字でPDFを使う(というよりghostscriptを使う)



※ BGVにバグがありました。修正版をアップしたので入れ換えをお願いします。 2006/7/21

超漢字の良さの裏には問題点も多々あって、かなり困っているのが PDFが読めない点。最近はたいていの文書を超漢字上に持ってきてはい じっているのですが、PDFが使えないというのはかなり痛いです。仕事とか日常とかで参照する文書がPDFだったりすること、結構多くなってきています。 さらに言えば、ExcelとかWordとか、超漢字に移植されるはずもないフォーマッ トの文書もPDF に変換すれば参照だけはできるはずですが、そもそも読めないんだから諦めるしかありません。
で、その現状を打破する方法は無いのか? とWebを漁ってみたのですが、 (かずのり様)が問い合わせた結果がだそうで、何かユーザー側で対処するしか無いみたいです。
かずのり様ご自身でを立てていらっしゃるのですが、停止状態のようです。
って、ことで諦めて、自分で作ることにしました。
言うまでもないですが、ghostscriptのbuildができればpdfも読めるはずです。おまけにpsとかも読めるから、素敵。いろいろ調査の上、(ちょいと苦労しましたが)何とか成功したので、記録しておきます。
なお、この解説は自分でコンパイルする人のためのものです。コンパイル済みバイナリーおよび、GUIフロントエンドであるBGVを使いたい方は、以下の項目へお進みください。



必要なもの

●ghostscript-7.05.tar.gz
●gnu-gs-fonts-other-6.0.tar.gz
●gnu-gs-fonts-std-6.0.tar.gz
●jpegsrc.v6b.tar.gz
●libpng-1.2.5.tar.gz
●zlib-1.1.4.tar.gz
●acro5-cmaps-2001.zip
●adobe-cmaps-200204.zip
●Kochi-Gothic.bz2
●Kochi-Mincho.bz2

一応、解説。ghostscript本体は、RingServerとかあちこちに落ちているのでそれを拾ってください。こことかね。
東風フォントはここからCIDになったものを入手しました。
あとは、PNGのホームページとかzlibのホームページとかからざくっと持ってくるといいでしょう。
Adobeのあれは、ftp://ftp.gyve.org/pub/gs-cjk/ あたりかなー?



コンパイル

志を高く持てば
純粋超漢字アプリケーション

なんでしょうけど、ものには順序ってものがあると思うので、まずはunixエミュレータで動くことを目指しました。ってゆーか、アプリケーション版に関してはまた再挑戦する日も来るでしょう。
ソースをぐだぐだ眺めていじって、やっているうちに何とかコードがまと まったので、こういう追加ファイルを作ってみました。です。
cgywin上に構築した開発環境の上で作っています。他のものは持っていないのでできるかどうかわかりません。ごめんなさい。上のアーカイブには偽物makerulesファイルも入っていますが、かなりルール違反です。
でも、動いてるからいいや。



手順

●ghostscript-7.05.tar.gzを展開する。
●展開したディレクトリに入り、zlib、libpng、jpegを展開する
●上記、ライブラリー類の名前をかえる。例えばlibpng-1.2.5というディレクトリはlibpngにする。zlib-1.1.4はzlib。jpeg6bはjpeg。
●追加ファイルをghostscriptのディレクトリ中のsrcディレクトリにコピーする(展開してからね)
●make -f src/btron.mak
●make -f src/btron.mak install
●/SYS/gsというディレクトリにあれやこれやコピーされます。何でだかわからないけど/SYS/gs/bin/gsが/SYS/gs/bin/gs.exeになってしまっているので名前を変えます。
●cd /SYS/gs
●mkdir res
●cd res
●adobe-cmaps-200204.tar.gzとacro5-cmaps-2001.tar.gzを展開
●mkdir CIDFont
●cd CIDFont
●Kochi-*をコピーし、bzip2をほどく
●cd /SYS/gs/7.05/lib
●ここでCIDFnmapというファイルを編集し、以下の内容を追加します。

(CIDFnmap.Ore) .runlibfile
/Ryumin-Light /Kochi-Mincho ;
/GothicBBB-Medium /Kochi-Gothic ;
/HeiseiMin-W3 /Ryumin-Light ;
/HeiseiKakuGo-W5 /GothicBBB-Medium ;
/HeiseiMin-W3-Acro /Ryumin-Light ;
/HeiseiKakuGo-W5-Acro /GothicBBB-Medium ;
/MS-PGothic /GothicBBB-Medium ;
/MS-PMincho /Ryumin-Light ;

●さらにgs_res.psを編集し、248行目からを以下の内容に変更します。

/FontResourceDir (/SYS/gs/res/Font/) readonly .forcedef % pssys'params is r-o
/GenericResourceDir (/SYS/gs/res/) readonly .forcedef % pssys'params is r-o
 

●これでできあがり。お疲れさま。 
/SYS/gsをzipか何かにして超漢字に持っていきましょう。一応、バイナリーも用意してあります。



使い方

/SYSの直下にgsというディレクトリを置くことを想定してコンパイルしています。
/SYS/gs/bin/gsが実行ファイルですので、どこかパスの通った場所においてください。
/SYS/gs/exampleにいろいろあるはずなので、適当に見てみてください

gs -sDEVICE=png16m -sOutpufFile=/SYS/USR/TMP/tiger.png
/SYS/gs/example/tiger.ps

とかね。何でか知らないけど、フルパスじゃないとちゃんと動かないみたいです。できあがったファイルに、画像閲覧(パーソナルメディアのサンプルにあるソフト)の付箋を貼れば見ることができます(基本ブラウザの付箋でもよいそうです)。


見てみた結果




ghostscript フロントエンド「BGV」

上ので一応コンパイルはできたのですが、画像一枚一枚に付箋を貼るのはかったるいので、GUIフロントエンド「BGV」を作りました。まだできあがったばかりで、ちゃんとした配布形態も整えていませんが、デバッグを手伝っていただける方は使ってみてください。
サブプロセスでgsを起動し、表示するという形式ですのでパスとかがシビ アになってしまいました。サブプログラムも入っていますので、以下のバイナ リーをお使いください。バックアップしたものを書庫にしてあります。「/SYS」 以下に配置してください。

(書庫形式)

アプリケーション本体はこちらです。
こんな画面になります。

(Rev 0.202 2006/07/21)
(Rev 0.202 2006/07/21 ダウンロードトラブル対策。上記と同じものです)

一応、動作は確認していますが、以下の問題点があります。直せるものはおいおい直しますが、含みおいてご利用ください。

●遅い……。
一ページ表示するたびにgsを起動しなおすので、かなりとろいです。

●汚い……。
これはgsそのものの問題ですが、日本語フォントがちょいと汚いです。誰か超漢字のフォントレンダリングをgsに組み込んでくれないかなー? それが待てない方には、裏技が幾つか存在していて「Acrobat Reader 4.0についてくるCIDフォントをごにょごにょ……」、「Windowsについてくるmsmincho.ttcとmsgothic.ttcをごにょごにょ……」。ライセンスの問題がついてまわりますので、詳しくは書けませんが、を参考にすると幸せになれるかもしれないですね。

●スクロールが遅い。ってゆーか、ステップが小さい。
ホイールを使ったときの問題です。とりあえず試してみましたが、かなり大変でした。まだできてません。

まだ、α段階のソフトです。バグなどを発見した場合はお知らせください。メールはoda@kauda.jpです。



便利なスクリプトをいただきました

BGVは現在、非同期サブプロセスでgsを起動するよう改造を加えているのですが(危険すぎて公開できる
段階ではありません)、「そんなの待てない!」という方向けに「しみず」様より便利なスクリプトをいただきました。
これを使えば、コマンドラインから一括でキャッシュ変換ができるようです。かなり便利だと思います。
スクリプト本体はこちらです。



バージョンアップ(2003/03/11 BUG-FIX 2006/07/21)

上記のとおり、非同期にgsプロセスを動かす改造をほどこしました。今までは一ページ表示するたびに、gsプロセスを起動していましたが、この改造によって可能な限り連続してページ生成をするようになりました。

ついでと言っては何ですが、以下の改造を施しました。
●ページを生成するたびに、システムメッセージ領域にメッセージ表示
●ページ数が確定した時点で、システムメッセージ領域にメッセージ表示
●ページ指定ダイアログ実装(お好きなページに飛べます)
●ページ生成エラーが発生した場合はその旨、伝えるように修正
今回はかなりの改造になってしまったので、リビジョンを0.1上げて0.2台にしました。

ダウンロードは↓からどうぞ

gs本体  (書庫形式)
BGV  (Rev 0.202 2006/07/21)
※以前ダウンロードした方向け
  (2003/03/11)

注意!! 以前ダウンロードした方はgs-helperだけを入れ替えてください。リンク名はgs-helper.binと
なっていますが、gs-helperと名前を変えて/SYS/gs/binに設置してください。このファイルが古いと
BGVは動作しません。
この場合、キャッシュ形式が若干異なるため、メニューより「全てのキャッシュを削除」を実行した方が安全です。やらなくても動いてはいますが……。



解説入り配布バージョン。これがおすすめ。




「BGV」更新履歴

●2003/1/23 Rev 0.102
・デバッグ用にキャッシュデータを全て落とすコマンドを追加。
・トレーへ複写コマンドを追加。
●2003/1/30 Rev 0.103
・右下以外をつかんで変形すると、スクロールバーがえらい事になるという恥ずかしいバグを修正
●2003/3/11 Rev 0.201
・ページを生成するたびに、システムメッセージ領域にメッセージ表示
・ページ数が確定した時点で、システムメッセージ領域にメッセージ表示
・ページ指定ダイアログ実装(お好きなページに飛べます)
・ページ生成エラーが発生した場合はその旨、伝えるように修正
●2006/7/21 Rev 0.202
常時CPUを100%使い切ってしまう、というバグがありました。
にご指摘いただきました。どうもありがとうございました。