需要有关 FPDI 和 TCPDF 的帮助:输出 pdf 的第 1 页将使用模板的第一页,接下来的页面将使用模板的第二页

Need help on FPDI & TCPDF: page 1 of output pdf will use the first page of the template, the next pages will use the second page of the template

我正在尝试创建发票文档并以 pdf 格式显示项目。

我遇到的问题是第一页将使用 pdf 模板(使用 FPDI),其中包含公司徽标、公司信息和购买的商品列表。

如果项目列表需要一页以上,则下一页将需要使用 pdf 模板的第二页,该模板仅将公司徽标显示为 header 以及所购项目的延续。下面是我的示例代码。我也尝试基于此 SO post 扩展 fpdi,但我无法使其工作。

    $pdf        = new FPDI();

    ob_start();
    echo $this->view->print_invoice($productItems, $customerInfo);
    $content    = ob_get_contents();
    ob_clean();

    // add a page
    $pdf->addPage();
    $pdf->writeHTML($content);

    $pageCount  = $pdf->setSourceFile(ROOT_DIR . "public/pdf-templates/group.pdf");
    $tplIdx     = $pdf->importPage(1, '/MediaBox');

    $pdf->useTemplate($tplIdx, 10, 10, 190, 280);

    $pdf->Output('outfile.pdf','I');

在此先感谢您的帮助!

只需实现您在扩展的 header() 方法中描述的逻辑 class:

class PDF extends FPDI
{
    public function Header()
    {
        if ($this->PageNo() > 1) {
            $tplIdx = $this->importPage(2);
        } else {
            $tplIdx = $this->importPage(1);            
        }

        $this->useTemplate($tplIdx);
    }
}

ob_start();
echo $this->view->print_invoice($productItems, $customerInfo);
$content = ob_get_contents();
ob_clean();

$pdf = new PDF();
$pdf->setSourceFile(ROOT_DIR . "public/pdf-templates/group.pdf");
$pdf->addPage();
$pdf->writeHTML($content);
$pdf->Output('outfile.pdf','I');