SQS Source Editor 2.0におけるPDF書き出し機能について

231 views
Skip to first unread message

hiro

unread,
Feb 12, 2010, 2:52:27 PM2/12/10
to sqs-users
久保裕也様


はじめまして。ペガサスエンジニアリングの新保と申します。現在、バルカン半島に位置するボスニア・ヘルツェゴビナ国にてJICA案件に従事しておりま
す。

当地でアンケート実施する事となり、開発されたソフトウェアを利用したいと考えておりますところ、下記のような現象が発生致しました。つきましては、ア
ドバイス等をいただければと思い、投稿致します。

現象:英語版Windows 7にて、キリル語を含む質問票を作成してPDFフォーム書き出し(Export PDF Form)を実行しますと、キリ
ル語の部分が「#」となってしまう。

現在までの確認事項
PDF書類のDocument PropertiesのFontsを確認すると、Times-Roman, Times-Boldとなっている。
キリル語文字を含む文書をメモ帳で作成し、フォントをTimes-New-Romanに指定しても文字化けは起きない。
Mac OS X 10.5.8+Java SE 6の環境下では、PDF書類のFontsとしてIPAGothic (Embedded
Subset)と表示され、全角文字と思われるが、文字化けせずにキリル語が表示される。

お伺いしたい事項
1)OSが変わると、PDF書類に埋め込まれる文字セットが異なるのはアプリケーションによるものでしょうか。それともJavaの実行環境によるもので
しょうか。ご存知の範囲で結構です。教えていただけると助かります。

2)アプリケーションの機能として用意されているPDF書き出しの機能は、特別に作成されたルーチンで実現しているのでしょうか。それとも他で開発され
たルーチンを利用しているのでしょうか。もし、他で開発されたルーチンを利用されているようであれば、名称を教えていただけないでしょうか。

何ぶん、特殊な文字セットですので、想定外の問合せになるかと思いますが、宜しくお願いいたします。


ペガサスエンジニアリング株式会社
新保博之

久保裕也

unread,
Feb 12, 2010, 10:04:50 PM2/12/10
to sqs-...@googlegroups.com
ペガサスエンジニアリング新保様、

SQS開発者の久保裕也です。

SQSの多言語への展開については、個人的にも強い意欲を持っております。
ただし、現状の開発内容には、多言語対応が不十分・不完全な部分が多くあるので、
開発協力、いろいろな環境での検証やサンプルの提供などをしていただけると嬉しいです。

また、私の本棚には、坂口尚さんの書かれた「石の花」があります。
私のソフトウェアで、ボスニア・ヘルツェゴビナの国の人々を
支援できるのであれば、望外の喜びです。


> 1)OSが変わると、PDF書類に埋め込まれる文字セットが異なるのはアプリケーションによるものでしょうか。それともJavaの実行環境によるもので
> しょうか。ご存知の範囲で結構です。教えていただけると助かります。

ご存じのことかと思いますが、OSには「表示言語」の設定があります。
Windows 7 Ultimate,Enterpriseおよび、MacOSX,UbuntuなどのOSには、
OSの「表示言語」を切り替える機能があります。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1090langpk/langpk.html
なお、私の現在の開発環境はWindows 7 Home Premiumなので、
Multilingual User Interface Pack (MUI) をインストールしたり、
表示言語を切り替えたりすることができないのですが....

SQSでは、アプリケーション側で、このOSの「表示言語」の設定内容に応じて、
GUIの表示言語の切り替えや、PDF生成時の文字セットの切り替えを
自動的に行うようにしています。
(また、アプリケーション実行時のプロパティでuser.languageの値を指定することで、
言語設定を上書きできます)

OSやuser.languageプロパティによる表示言語の設定に対して、
現在のSQSの実装側が対応しているのは、英語(en)と日本語(ja)だけです。
それ以外の表示言語では、デフォルトの英語(en)の実装に切り替わる形です。

ボスニア・ヘルツェゴビナで利用するならば、
http://ja.wikipedia.org/wiki/%E3%83%9C%E3%82%B9%E3%83%8B%E3%82%A2%E8%AA%9E
によれば、ボスニア語のISO 639-1の言語コードは bs ですので、
SQSのソフトウェア内に、この bs への対応ファイルを追加することになります。


以下の作業をするには、前提として、Javaでのアプリケーション開発に関して、
Subversion, Apache Maven, コード署名証明書などについての知識が必要
となります。まずは、http://dev.sqs2.net/wiki/sqs/How_to_Build_Executables
を読んでいただいた上で、ということになるのですが、

基本的には、たとえばSQSのソースコードの、sqs-translatorモジュールのうち、
src/main/resources/以下の、
「ファイル名_言語コード.拡張子」という形式になっているいくつかのファイルについて、
もともとある_jaや_enを真似て、「ファイル名_bs.拡張子」というファイルを追加してから、
全体をビルドし直して運用することになるものと思います。


> 2)アプリケーションの機能として用意されているPDF書き出しの機能は、特別に作成されたルーチンで実現しているのでしょうか。それとも他で開発され
> たルーチンを利用しているのでしょうか。もし、他で開発されたルーチンを利用されているようであれば、名称を教えていただけないでしょうか。

PDF書きだし機能については、オープンソースのW3C XSL-FO実装である、
Apache FOP 0.95を利用しています。
http://xmlgraphics.apache.org/fop/0.95/index.html
なお、FOPそのままではなく、PDFレンダリング時にマーク位置・自由記述欄位置を
採取できるようにするための、以下の独自パッチを当てている点に注意が必要です。
http://dev.sqs2.net/repositories/entry/sqs/sqs-translator/fop_0.95-sqs.patch

さて、英語版Windows7において、
FOPでキリル文字を用いるときに文字化けするという問題ですが、

FOPには、OSにインストールされたフォントを自動的に検出して、
PDF生成や表示に利用できるしくみがあります。
しかし、この機能は、いかなる環境でも100%完璧に動作するというわけではないようです。
他方、FOPには、PDF生成時にフォントの置き場所をURLで明示的に指定して参照させる機能、
生成するPDFファイルにTrueTypeフォント自体を埋め込む機能などが備わっています。

SQSの開発にあたって、私としては、運用上のトラブルをなるべく避けるようにするために、
FOPでPDFを生成・表示する際には、OSにインストールされたフォントに依存しない、
自前の方法でTrueTypeフォントを供給し、これを明示的に参照させることにしました。
さらに、SQSが生成するPDFファイルには、自前で供給したTrueTypeフォントを
埋め込みたいと考えました。

最終的には、フリーで埋め込み可能なライセンスの日本語TrueTypeフォントである
「IPAフォント」と、それをもとに生成したmetricsファイルをSQSに同梱することにし、
さらに、このフォントやmetricsファイルの置き場所を、
動作環境のローカルなファイルシステム上のパスで指定するのではなく、
JavaWebStartのしくみを通じて配布したjarファイルの内容の一部を指定する
特殊なURLを用いるといった方法によって、現状のような機能を実現させることができました。

SQS内のFOPでキリル文字を表示しようとするときに、フォント自動検出機能が
うまく動作しない?場合には、この日本語版と同様の試みをする必要があるかもしれません。
具体的には、
http://xmlgraphics.apache.org/fop/0.95/configuration.html
を参考に、
sqs-translatorモジュールのうち、src/main/resources/fop/
というディレクトリにある userconfig_ja.xmlを参考に、
userconfig_bs.xml というファイルを作成してもらうことになります。

次に、ipafontモジュールをコピーした新しいモジュールを作成して、
キリル文字を含む埋め込み可能なライセンスの
TrueTypeフォントとそのmetricsファイル、これらを参照するためのアンカーとなる
Javaクラスファイルを作成し、これらをまとめたjarファイルをビルドします。

さらに、sqs-editorモジュール内のpom.xmlファイルを編集して、
このjarファイルを参照するようにし、jnlp以下一式を作成し直すことになります。

...以上が、必要な作業のアウトラインということになります。


なお、このMLは一般利用者向けという位置づけであるので、
以後、この話題については、開発者向けのフォーラムで
続ける形にさせていただければと思いますが、いかがでしょうか。

日本語で議論するなら、
http://dev.sqs2.net/projects/sqs/boards/show/1
あるいは、世界の他の国へのSQSのローカライズの可能性を広げるために
あえて英語で議論して後進の人々への記録を残そうとするのならば
(私はヘナチョコ英語での議論になってしまいますが、すみません)、
http://dev.sqs2.net/projects/sqs/boards/show/3

です。
よろしくお願いいたします。

久保裕也


2010年2月13日4:52 hiro <yuki....@gmail.com>:

> --
> このグループに投稿するには、次の宛先にメールを送信してください。
> sqs-...@googlegroups.com
> このグループから退会するには、次へメールをお送りください。
> sqs-users-...@googlegroups.com
> その他のオプションについては、次の URL からグループにアクセスしてくださ
> い。 http://groups.google.com/group/sqs-users?hl=ja

hiro

unread,
Feb 20, 2010, 3:57:08 PM2/20/10
to sqs-users
久保様

丁寧な返信をいただいたにも関わらず、お礼が遅くなってしまい、申し訳ありません。

ボリュームいっぱいでお腹が満腹なので、消化するのに時間がかかりそうです。
何とか、教えていただいた情報を元に頑張ってみます。

消化完了後、何か進展、あるいは不明点があれば、投稿したいと考えております。

hiro

unread,
Feb 21, 2010, 4:11:19 AM2/21/10
to sqs-users
いただいた情報を元に、Windows側の設定をいろいろ変更してuser.languageプロパティを変更できないか、試してみましたが、当方の能
力の限りでは無理でした。

ご指示に従い、これから先はデベロッパーフォーラムでご相談したいと思っております。
どうぞ、宜しくお願い致します。


ペガサスエンジニアリング株式会社
新保博之

Reply all
Reply to author
Forward
0 new messages