我一直在修补PDF :: API2,我遇到了问题,很好地创建了一个pdf文件并在其中添加了文本。但是,如果要写入的文本流向多个页面,则脚本不会打印到下一页。我已经尝试过研究这个答案,但无济于事。我希望每个页面都有50行文本。我的脚本如下。它仅在第一页上打印,创建其他页面但不打印到其中。任何有解决方案的人
!/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( );
答案 0 :(得分:3)
问题在于您正在创建新页面,但是立即忘记了新变量:
if(($i%50) == 0)
{
my $page = $pdf->page;
my $fnt = $pdf->corefont('Arial',-encoding => 'latin1');
my $txt = $page->text;
}
您所做的所有my
变量在结束括号时消失。只需删除my
,您就可以修改顶级范围内的变量。
修改:您可能还希望在制作新网页时重置$line
变量。
答案 1 :(得分:0)
字体$ fnt不需要更改,因为它取决于PDF,$ pdf,而不是页面,$ page。
答案 2 :(得分:0)
尽管我喜欢Perl,但我学到了足够多的Python来使用ReportLabs库生成PDF。创建PDF是Perl v.Python的弱点之一。