如何在 TCPDF 中更改具有特定 header 标题的特定页面的页脚

How to change footer of a particular page with a particular header title in TCPDF

我正在使用 AddPage() 方法在 TCPDF 中创建多个页面。创建第二页时,我调用 setHeaderData() 方法来设置 header 名称。在某些情况下,首页可能会溢出并自动分页。我需要在设置了 header 标题的第一页之前识别页面并仅更改其页脚。如何使用 TCPDF 实现此目的。

一个解决方案是设置一个新的 属性,它将在 TCPDF 调用 Footer() 方法时识别此页面。

下面的示例在创建第一页之前将新的 PrintCoverPageFooter 属性 设置为 True,然后在生成第二页之前将其设置为 False。此 属性 然后在条件语句中与 page 属性 一起使用以创建唯一的页脚。还有一个 PrintCoverPageHeader 属性 允许在文档的封面上自定义 headers。

<?php
require_once('tcpdf_include.php');

class MYPDF extends TCPDF {
    public function Header() {
        if ($this->PrintCoverPageHeader) {
            $this->Cell(0, 15, '<< Cover Page Header >> ', 0, false, 'C', 0, '', 0, false, 'M', 'M');
        } else {
            $this->Cell(0, 15, '<< Other Page Header >> ', 0, false, 'C', 0, '', 0, false, 'M', 'M');
        }
    }

    public function Footer() {
        $this->SetY(-15);
        if ($this->PrintCoverPageFooter && $this->page == 1){
            $this->Cell(0, 10, 'Cover Page Footer '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
        } elseif ($this->PrintCoverPageFooter && $this->page == 2){
                $this->Cell(0, 10, 'Cover Page Overflow Footer '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
        } else {
            $this->Cell(0, 10, 'Other Page Footer'.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
        }
    }
}

$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// Add first page with first page header and footer.
$pdf->PrintCoverPageHeader = True;
$pdf->PrintCoverPageFooter = True;
$pdf->AddPage();
$pdf->Write(0, str_repeat("Cover Page\n",80), '', 0, 'C', true, 0, false, false, 0);

// Add second page with other header and footer.
$pdf->PrintCoverPageHeader = False;
$pdf->AddPage();
$pdf->PrintCoverPageFooter = False;
$pdf->Write(0, "Second Page", '', 0, 'C', true, 0, false, false, 0);

// Add third page with other header and footer.
$pdf->AddPage();
$pdf->Write(0, "Third Page", '', 0, 'C', true, 0, false, false, 0);

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