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

时间:2015-10-05 18:48:45

标签: php tcpdf fpdi

我正在尝试创建发票凭证并以pdf格式显示这些项目。

我遇到的问题是,第一页将使用带有公司徽标,公司信息和购买物品清单的pdf模板(使用FPDI)。

如果项目列表需要多个页面,则下一页需要使用第二页pdf模板,该模板仅显示公司徽标作为标题并继续购买项目。以下是我的示例代码。我也试图根据这个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');

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

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