TCPDF和FPDI:将PDF模板用于后续页面

时间:2019-05-08 15:21:12

标签: php pdf-generation tcpdf fpdi

我们希望通过HTML创建动态生成的PDF-但我们也想为每个生成的页面使用现有的模板。

通过FPDI使用模板很简单:

// Generate the FPDI instance
$pdf = new \setasign\Fpdi\Tcpdf\Fpdi(…);

// Add the first page
$pdf->AddPage();

// Load the template
$pagecount = $pdf->setSourceFile('template.pdf');
$tpl = $pdf->importPage(1);
$pdf->useTemplate($tpl);

// Write the HTML
$pdf->writeHTML($html, true, 0, true, 0);

但是,当编写的HTML导致自动换行时,后续页面将不使用模板。

由于由于动态生成的HTML,我无法事先知道将生成多少个页面-我该如何指示TCPDF / FPDI自动将给定的模板用于所有页面?与mPDF SetDocTemplate函数类似,您可以在其中定义应根据需要重复模板的最后一页。

  • tecnickcom/tcpdf版本6.2.26
  • setasign/fpdi版本2.2.0

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。就我而言,使用xFPDF包。 (但对于普通的FPDI应该相同。)

我通过头函数添加模板来解决它。 http://www.fpdf.org/en/doc/header.htm 对我来说,这是在每个生成的页面上添加徽标和页面标题。因此,此功能用于每个生成的页面。我只是将模板代码移到了header函数else的开头,例如在我的情况下,徽标和文本不会显示在header中。

class PDF extends XFPDF_CORE
{

  function Header()
  {
    $pagesource = $this->setSourceFile('pdftemplate/preview-test.pdf');
    $pageimport = $this->importPage($pagesource);
    $this->useTemplate($pageimport);

    ...

   }

 ...

}


$pdf->new PDF();

...

$pdf->AddPage();

...

$pdf->writeHTML($multipagecoveringhtml);

...

希望这对您的项目仍然有帮助。