現在提案中の Webシステムの話。
入力した内容を反映させた書類を出力する必要があったので、PDF ファイルを出力する仕様で見積もっていたのだが、MS-Word 用の ファイルを出力してほしいとの要望あり。
Perl での開発を考えていたので、RTF::Writer モジュールを入れて RTF(Rich Text Format)ファイル出力のテストをしてみた。
RTF::Writer モジュールは、CPAN モジュールを使ったインストールで一発OK。
何か、CPAN モジュールできれいにインストール出来る Perl モジュールに出会ったのが久しぶりなので妙に嬉しい。(笑)何かと Test で失敗する事が多いからなあ。(^^;
で、早速、Writer.pod に載っているサンプルを元に、日本語がうまく扱えるかテスト用のスクリプトを書いてみた。
use RTF::Writer;
my $rtf = RTF::Writer->new_to_file("test.rtf");
$rtf->prolog('title' => "テスト帳票", 'fonts' => ["MS Pゴシック"]);
$rtf->number_pages;
$rtf->paragraph(
\'\fs40\b\i', # 20pt, bold, italic
"これは RTF 出力のテストです"
);
$rtf->close;
実行結果は上の画像のとおり。ちゃんと、RTF フォーマットのファイルが作られて、Windows2000 上の Microsoft Word 2000 で読み込むことが出来た。
RTF ファイルで良いということなら何とかなりそうだ。
ちなみに、日本語の含まれたファイルは Shift_JIS で出力されるようだ。
なので、セットする文字列自体も Shift_JIS でないと文字化けする。今回は、テストということで、スクリプト自体を Shift_JIS で書いて対処した。
本番プログラムを Shift_JIS で書くわけにはいかんので、その時は Jcode とか使って Shift_JIS に変換してやる必要がありますな。
ま、問題無し。
でも、エンドユーザさんとこで、「RTF って何?DOC ファイルじゃなきゃ嫌だ!」とか言い出したら面倒だなあ。(^^;
俺が直接エンドユーザ折衝してたら、思わず「はぁ?今時 DOC ファイルじゃないと駄目って、何?DOC ファイルじゃないと表現できない部分ってありましたっけ?まさか、拡張子が rtf じゃ Word 用のファイルってわからないから?みんなちゃんとした社会人なんだから、一回説明すれば大丈夫でしょ?」くらいの厭みは口走っちゃいそうで怖いけど。(笑)
どうしても DOC でなきゃ嫌だということになれば、Java で Jakarta POI 使ってほげほげか。
コメントする