2005年 03月 16日
Apache FOPと外字印刷
最近、動的なWEBページ(帳票など)をPDFファイルに変換し印刷するというWEB印刷の仕事をやっています。今、Apache FOPを使ってこの機能要求を実現しようとしています。
FOPとは、XSL FOからPDF文書を作成するJavaライブラリです。XMLとXSL(XSLT)でFOを作り、それをPDFに変換することも可能です。そしてこちらが主流となっています。 FOPはフリーソフトで、以下のURLからダウンロード可能で現在(2005/03/16)の最新バージョンは0.20.5です。http://xml.apache.org/fop/ FOPを使う際、どんなフォントを使用するのかは、FOPのキーとなっているでしょう。FOPではデフォルトで数種類のフォントが用意されています。デフォルトのフォント以外のフォント(たとえば日本語)を使いたい(FOPに追加したい)場合、環境設定しなければなりません。なお、FOPに追加できるフォントはType1フォントとTrue Typeフォントです。 たとえば、MS明朝を使うための環境設定は以下のとおり: (1) font metricsファイルの作成 font metricsファイルというのは、Font情報を記述したxmlファイルです。作成するには、org.apache.fop.fonts.appsパッケージのツールを使います。FOPに追加できるフォントはType1フォントとTrue Typeフォントです。 (Type1とTrue Typeってよく知りませんが、 こちらによると、世界標準の2大アウトラインフォントらしい) ここではWindowsに標準で付いてるTrue Typeフォントを例に話を進めます。 MS明朝をFOPに組み込んでみましょう。True Typeフォントは、うちの環境(Windows XP)の場合、 C:\WINDOWS\Fonts に入ってます。 .ttf、.ttcという拡張子のファイルがたくさん入っています。 ttfがTrue Type Fontで、 ttcの方はTrue Type FontのCollection(複数入ったもの)ではないかと思われます(たぶん)。 コマンドラインで、org.apache.fop.fonts.apps.TTFReaderを使って、 True Typeのコレクションファイルmsmincho.ttcから font metricsファイルmsmincho.xml を作ってみましょう。 C:\fop>java -cp build/fop.jar;lib/xercesImpl-2.2.1.jar;lib/xalan-2.4.1.jar;lib/batik.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS Mincho" C:/WINDOWS/Fonts/msmincho.ttc msmincho.xml (2) userconfig.xmlの編集 confディレクトリのuserconfig.xmlを編集します。以下のような記述をします。デフォルトのuserconfig.xmlに日本語フォント記述のサンプルがあるので、それをコピーして書き換えればいいかなと思います。
(3) userconfig.xmlを指定して実行 日本語フォントを使ったfoを用意しましょう。 jp.fo(hello.foの以下だけ編集) <fo:block font-size="18pt" text-align="center" font-family="Mincho"> はろーFOP </fo:block> FOPを実行します。このとき、-cオプションでuserconfig.xmlを指定します。 C:\apps\fop-0.20.4>fop -c conf/userconfig.xml jp.fo jp.pdf 日本語もちゃんと出てますね~。 ちなみに、このあたりの基本的な情報は、FOPドキュメントのfontsのところに書いてます。 userconfig.xmlを指定して実行(組み込み) Javaプログラムから実行する場合も簡単です。以下のようにOptionsを使います。
以上で、とりあえず日本語MS明朝の印刷は可能となっておりました。 しかし、今は銀行関係の仕事で、実際の帳票では「㈱」や「(財)」などの外字を一般的に使われております。 LinuxなどFOPを使用する場合、外字リンクが無効となっています。外字を印刷するためには、外字付きのフォントを新しく作らないといけないのです。 外字付きフォントを作成するには、シェアウェア「TTEdit」をダウンロードしてください。5000円のシェアウェアでちょっと高いと思われるかもしれないが、1ヶ月のお試し期間があり、ちょっとだけ使うのに本当に有り難い。 外字付きフォント作成の手順は以下のとおり: ① TTEditかWindows内蔵の「外字エディタ」で、必要な外字を作成する。 ② 外字作成後,C:\Windows\Fontsの配下に、「EUDC.TTE」が生成されるはず。このファイルを作業フォルダにコピーし、「EUDC.TTF」にリネームする。そして、リネーム後のTTFファイルを再度Windows\Fontsの配下に入れてください。(フォントのインストールになる) ③ TTEditのホームページから、外字領域付フォントを<ダウンロードする ④ TTEdditを起動し、メニューの「ファイル」から「一括コピー」を選択する。一括コピーの画面で、参照「コピー元ファイル」はWindows\FontsのEUDC.TTFを選んで、「コピー先ファイル」は先ほどダウンロードした空の外字領域付フォントファイルに選んでください。そしてOKボタンを押して、外字は外字領域付フォントファイルにコピーされる。 ⑤ 外字領域付フォントに、外字以外の文字を設定するには、④番の手順でコピーしたフォント、たとえば、MS明朝の場合、「MSMINCHO.TTC」をコピー元ファイルとして、一括コピー実行すれば、外字領域付明朝フォントの出来上がり。 そして、先述した環境設定の手順で、外字領域付明朝フォントを使って設定すれば、PDFの印刷で、外字も化けずにちゃんと印刷できると思います。
by ayuoffice
| 2005-03-16 20:57
| IT情報
|
<<中国blogランキング>> カテゴリ
以前の記事
お気に入りブログ
お気に入り
最新のコメント
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧
|