php - 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
功能,您可以在其中定义模板的最后一页应根据需要重复。
tecnickcom/tcpdf
版本6.2.26
setasign/fpdi
版本2.2.0
解决方案
我遇到了同样的问题。在我使用 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);
...
希望这对您的项目仍然有帮助。
推荐阅读
- python - 带有日期滑块和播放小部件/动画的 iPyWidget?
- xslt - 使用 Heat 工具收集 Wix 后无法修改 Directoryref/Directory 元素的 Name 属性值
- javascript - 从 html 表创建嵌套对象 JSON?
- html - 使用 powershell 对齐电子邮件正文中的列
- java - 常用方法的Spring异常处理
- r - 不在 RStudio 中时使用 R 代码重新启动 R 会话?
- c++ - 从数组创建图标
- asp.net-core - Wix Installer ASP.NET Core 单独解决方案
- python - pyspark:Spark 2.3 中的arrays_zip 等效项
- javascript - Javascript - 将数组声明为变量并切片