2008年5月6日火曜日

PDFJを試す

PDFで帳票作成したいけど、Apache FOPはJavaが必要だし、XSLTがなんだか複雑そうでめんどくさいので、他に何かいいのないかなと探していたら、PDFJという便利そうなものを発見したので、試してみた。

他のソフトについては、ここを参考に。
(PDFJについては、「新しくPerlで書く気にならないのが難点でしょうか。」という評価ですが。この辺は、好みの問題ってことで。)

準備
必要と言われているモジュールをインストール

cpan[4]> install TeX::Hyphen
cpan[5]> install Compress::Zlib
cpan[6]> install Digest::MD5
# mkdir pdfj-0.9
# cd pdfj-0.9
# wget http://hp1.jonex.ne.jp/~nakajima.yasushi/archives/PDFJ-0.90.zip
# unzip PDFJ-0.90.zip
# perl Makefile.PL
# make
# make install

サンプルコードを作成。こことかここを参考にした。

#!/usr/bin/perl

use utf8;
use strict;
use warnings;
use PDFJ qw[UTF8];

my $pdfversion = 1.6;
my $paperwidth = 595;
my $paperheight = 842;

my $doc = PDFJ::Doc->new($pdfversion, $paperwidth, $paperheight);

my $font = $doc->new_font("Ryumin-Light", "UniJIS-UCS2-HW-H", "Times-Roman", undef);
my $fontSize = 16;
my $textStyle = TStyle(font => $font, fontsize => $fontSize);

my $page = $doc->new_page();
my $text = Text('PDFJテスト', TStyle(font => $font, fontsize => 30));

my $paragraph = Paragraph($text, PStyle(size => 400, align => 'b', linefeed => 35));
my $block = Block('V', $paragraph, BStyle(align => 'b'));

my $x = 50;
my $y = $paperheight - 100;
$block->show($page, $x, $y);

$doc->print('pdfj-sample.pdf');

なんだかあっけなく動いてしまった。

次は、XPDFJ。
XPDFJのサンプルを適当に記述。どうやら、拡張しは、"xp"にするのが慣習のようです。
パッケージ内のsampleディレクトリにある、拡張し"xp"のものを適当にピックアップして編集。
つぎに、パッケージにあるutil/xpdfj.plをコピーしてパスを通す。
(今回は、お試しなのでカレントディレクトリにとりあえずコピーして実行しました。)
あとは、以下のように実行。無事、カレントディレクトリにxpdfj.pdfファイルが作成された。

$ ./xpdfj.pl -p /usr/local/src/pdfj-0.9/macro xpdfj1.xp xpdfj.pdf

0 件のコメント: