首页 > 解决方案 > TCPDF & FPDI:后续页面使用 PDF 模板

问题描述

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

使用模板 viaFPDI很简单:

// 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 自动为所有页面使用给定的模板?类似于 mPDFsSetDocTemplate功能,您可以在其中定义模板的最后一页应根据需要重复。

标签: phppdf-generationtcpdffpdi

解决方案


我遇到了同样的问题。在我使用 xFPDF 包的情况下。(但对于正常的 FPDI 应该是相同的。)

我通过标头函数添加模板来解决它。 http://www.fpdf.org/en/doc/header.htm 对我来说,这是为每个生成的页面添加一个徽标和页面标题。所以这个函数用于每个生成的页面。我只是将模板代码移到了标头函数 else 的开头,就像在我的情况下,徽标和文本不会出现在标头中。

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);

...

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


推荐阅读