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 UseTemplate
Спасибо
1 ответ
Просто поместите импортированную страницу в метод 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();
...
... и все должно работать как положено.
В дополнение к ответу @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, но, возможно, это поможет кому-то другому.