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等で警告の出力を抑止した方がよいかと思います。