【问题标题】:TCPDF & FPDI: use PDF template for subsequent pagesTCPDF & FPDI:后续页面使用 PDF 模板
【发布时间】:2019-09-26 09:10:53
【问题描述】:

我们希望通过 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 自动为所有页面使用给定的模板?类似于 mPDFs SetDocTemplate 函数,您可以在其中定义模板的最后一页应根据需要重复。

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

【问题讨论】:

  • 您使用的是哪个版本的 TCPDF?
  • 6.2.26,我会把它添加到原帖中

标签: php pdf-generation tcpdf fpdi


【解决方案1】:

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

我通过 header 函数添加模板解决了这个问题。 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);

...

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

【讨论】:

  • 我明白了,看起来很简单:)。我们最终搬到了mPDF,这个功能已经可以工作了,所以我不能再测试它了。
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
相关资源
最近更新 更多