开发者

Cannot print on multiple pages using PDF::API2

I have been tinkering around with PDF::API2 and i am facing a problem, create a pdf file very well and add text into it. However say if the text to be written flows over to more than one page, the script does not print over to the next page. I have tried researching for an answer to this but to no avail. I would like each page to have exactly 50 lines of text. My script is as below. It only prints on the first page, creates the other pages but does not print into them. Any开发者_运维技巧one with a solution

!/usr/bin/perl

use PDF::API2;
use POSIX qw(setsid strftime);
my $filename = scalar(strftime('%F', localtime));

my $pdf  = PDF::API2->new(-file => "$filename.pdf");
$pdf->mediabox(595,842);
my $page = $pdf->page;
my $fnt = $pdf->corefont('Arial',-encoding => 'latin1');
my $txt = $page->text;
$txt->textstart;
$txt->font($fnt, 20);
$txt->translate(100,800);
$txt->text("Lines for $filename");

my $i=0;
my $line = 780;
while($i<310)
{
    if(($i%50) == 0)
    {
        my $page = $pdf->page;
        my $fnt = $pdf->corefont('Arial',-encoding => 'latin1');
        my $txt = $page->text;
    }
    $txt->font($fnt, 10);
    $txt->translate(100,$line);
    $txt->text("$i This is the first line");
    $line=$line-15;
    $i++;
}
$txt->textend;
$pdf->save;
$pdf->end( );


The problem is that you are making new page, but forget new variables instantly:

if(($i%50) == 0)
{
    my $page = $pdf->page;
    my $fnt = $pdf->corefont('Arial',-encoding => 'latin1');
    my $txt = $page->text;
}

All my variables you make disappear on closing parentheses. Just remove my and you will modify variables from top-level scope.

Edit: You also probably want to reset $line variable when making new page.


The typeface, $fnt, does not have to be changed since it depends on the PDF, $pdf, and not the page, $page.


As much as I love Perl, I learned enough Python to use the ReportLabs library for PDF generation. Creating PDF is one of the weak spots of Perl v. Python.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜