Невозможно печатать на нескольких страницах с помощью PDF :: API2 - PullRequest
2 голосов
/ 14 февраля 2011

Я возился с 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( );

Ответы [ 3 ]

3 голосов
/ 14 февраля 2011

Проблема в том, что вы создаете новую страницу, но сразу же забываете новые переменные:

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

Все переменные my, которые вы вводите, исчезают при закрытии скобок. Просто удалите my, и вы измените переменные из области верхнего уровня.

Редактировать: Вы также, вероятно, хотите сбросить переменную $line при создании новой страницы.

0 голосов
/ 15 февраля 2011

Столько, сколько я люблю Perl, я выучил достаточно Python, чтобы использовать библиотеку ReportLabs для генерации PDF. Создание PDF - одно из слабых мест Perl v. Python.

0 голосов
/ 14 февраля 2011

Шрифт, $ fnt, менять не нужно, поскольку он зависит от PDF, $ pdf, а не от страницы, $ page.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...