PDFJ
PDFJとは
PDFを作成するためのPerlモジュールです。
日本語にも対応しています。
インストール
PDFJ-0.90.zipの例です。
中島 靖氏のサイトからPDFJのアーカイブを取得し、展開します。
% unzip PDFJ-0.90.zip
カレントディレクトリに展開されるので、後は通常通り Makefile.PLを使用してインストールします。
使用方法
かなり複雑なので、使用例を挙げておきます。
詳細は中島 靖氏のサイトをどうぞ(/_\;)
use PDFJ "UTF8";
use K2::HTML2PDF;
sub pdf {
my $self = shift;
my $p = new K2::HTML2PDF;
$p->parse($self->param('innerHTML'));
print $self->header( { -charset => 'utf-8',
'Content-type' => "application/pdf",
} );
my $doc = PDFJ::Doc->new(1.3, 792, 612);
$doc->add_info( Title => $p->{title} );
my $width = 732;
my $f_gh = $doc->new_font('GothicBBB-Medium', 'UniJIS-UCS2-HW-H', 'Helvetica', 'WinAnsiEncoding', 1.05);
my $c_black = Color(0);
my $ss_black = SStyle(fillcolor => $c_black);
my $s_title = TStyle(font => $f_gh, fontsize => 20, shapestyle => $ss_black);
my $s_main = TStyle(font => $f_gh, fontsize => 15, shapestyle => $ss_black);
my $s_small = TStyle(font => $f_gh, fontsize => 10, shapestyle => $ss_black);
my $sp_hr = Shape->style(SStyle(postskip => 5))->line(0,0,$width,0, SStyle(strokecolor => $c_black, linewidth => 1));
my $bs_frame = BStyle(padding => 10, align => "tl", height => 572, );
my $ps_40 = PStyle(size => $width, align => 'w', linefeed => 40, preskip => 10, postskip => 10);
my $ps_35 = PStyle(size => $width, align => 'w', linefeed => 35, preskip => 7.5, postskip => 7.5);
my $ps_updated_on = PStyle(size => $width, align => 'e', linefeed => 35, preskip => 7.5, postskip => 7.5);
my $p2 = $doc->new_page;
Block('V',
[ Paragraph( Text( [ $p->{title} ],
$s_title),
$ps_40
),
Paragraph( Text( $p->{updated_on},
$s_small),
$ps_updated_on),
$sp_hr,
Paragraph( Text( $p->{html},
$s_main),
$ps_35),
],
$bs_frame)->show($p2, 20, 20, 'bl');
my $pdf = undef;
open my $fh, '>', \$pdf;
$doc->print($fh);
close $fh;
print $pdf;
}
補足
PDFJはPerl-5.6をベースに書かれている(?)ためか、記述が古い部分が多々あります。
従って、部分的に修正するか、no warnings等で警告の出力を抑止した方がよいかと思います。