FPDI, FPDF SetAutoPageBreak добавить шаблон на страницу после перерыва

Я создал форму, которая позволяет пользователям создавать PDF-файл с неограниченным количеством страниц, я установил SetAutoPageBreak, чтобы он продолжался на второй странице, однако я не могу заставить страницы, созданные после разрыва страницы, продолжать использовать исходный файл шаблона. Основной код можно увидеть ниже.

require('fpdf.php');
require('fpdi.php');

$pdf = new FPDI('P','mm','A4');

    $pageCount = $pdf->setSourceFile("source_file.pdf");
    $tplIdx = $pdf->importPage(1);
    $pdf->AddPage();
    $pdf->useTemplate($tplIdx);
    $pdf->SetTextColor(63,76,89);
    $pdf->SetMargins(5,39,5,20);
    $pdf->SetAutoPageBreak(true,22); //page created doesn't have template attached
    $pdf->SetDrawColor(225,225,225);
    $pdf->SetFillColor(248,248,248);
    $pdf->SetLineWidth(1);
    $pdf->SetXY(82, 40);
    $pdf->MultiCell(165,5,$company.$block,0,L,false);
    $pdf->SetXY(19, 45);
    $pdf->MultiCell(165,5,$date.$block,0,L,false);
    $pdf->Output();

Оглядевшись, этот вопрос является самым близким, который я могу найти, однако я не уверен, что он вообще актуален: FPDF/ Шаблон использования FPDI

Спасибо


person Searlee    schedule 02.09.2014    source источник


Ответы (2)


Просто поместите импортированную страницу в метод Header:

class PDF extends FPDI
{
    protected $_tplIdx;

    public function Header()
    {
        if (null === $this->_tplIdx) {
            $this->_tplIdx = $this->importPage(1);
        }

        $this->useTemplate($this->_tplIdx);
    }
}

$pdf = new PDF('P','mm','A4');
$pdf->AddPage();
...

...и все должно работать как положено.

person Jan Slabon    schedule 02.09.2014

в дополнение к ответу @JanSlabon: (у меня нет необходимой репутации, чтобы написать комментарий, поэтому я опубликую это здесь, надеюсь, все в порядке)

Если вы хотите использовать определенный шаблон только для первой страницы и другой для всех остальных страниц, вы можете сделать это следующим образом:

class PDF extends FPDI
{
    protected $_tplIdx;

    public function Header()
    {
        if (null === $this->_tplIdx) {
            $this->setSourceFile('paper1.pdf');
            $this->_tplIdx = $this->importPage(1);
        } else {
          $this->setSourceFile('paper2.pdf');
          $this->_tplIdx = $this->importPage(1);
        }

        $this->useTemplate($this->_tplIdx);
    }
}

я знаю, что это не совсем то, что искал @Searlee, но, возможно, это поможет кому-то еще.

person skalta    schedule 13.08.2020