如何在TCPDF中使用特定标题标题更改特定页面的页脚

时间:2018-03-09 06:09:50

标签: php tcpdf

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

1 个答案:

答案 0 :(得分:1)

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

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

<?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');
相关问题