PDFJ

最終更新日時:2009-06-01 18:37:33
Perl PDF

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


お問い合わせは 掲示板 にて。