有没有办法在PHP中使用FPDF创建的pdf文件中隐藏页眉和页脚?

时间:2012-08-14 07:31:01

标签: php pdf fpdf

我用PHP创建了一个带FPDF的pdf文件。当我在其中插入页眉和页脚时,它们会自动显示在pdf文件的所有页面上。但我想阻止这些页眉和页脚显示在第一页上,并从pdf文件的第二页开始显示它们。我在网上搜索但无法找到解决方案。

换句话说,我想为我用FPDF创建的pdf报告动态创建封面。

有人可以从pdf文件的第一页给我一些关于如何执行hidinh页眉和页脚任务的提示!

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:7)

这是一件容易的事。请尝试以下方法:

class PDF extends FPDF {
    ...

    function Header() {
        if ( $this->PageNo() !== 1 ) {
            // Add your stuff here
        }
    }

    function Footer() {
        if ( $this->PageNo() !== 1 ) {
            // Add your stuff here
        }
    }
}

答案 1 :(得分:4)

问题是在第288行的Close()方法中创建了页脚,这是从第987行的Output()调用的,这意味着你有效地关闭了页脚然后再开始显示它。如果我需要灵活性,我会怎么做:

class PDF extends FPDF {
    function Header() {
        if (!isset($this->header[$this->page]) || !$this->header[$this->page]) {
            // ...
        }
    }

    function Footer() {
        if (!isset($this->footer[$this->page]) || !$this->footer[$this->page]) {
            // ...
        }
    }
}

然后像:

一样使用它
$pdf->header[1] = false;
$pdf->footer[1] = false;
$pdf->AddPage();

$pdf->header[2] = true;
$pdf->footer[2] = true;
$pdf->AddPage();

它可能不是最优雅的解决方案,但它可以正常工作,它可以有效地允许您动态更改页脚的可见性(ps:不指定状态也会让您使用标题有效地减少所需的代码量)

答案 2 :(得分:1)

我想为不想跳过第一页,但希望跳过最后一页(或任何一页)的人添加答案。如果您具有动态更改的文本并且无法预见页码,则特别方便。 这可以通过在将页面添加到PDF时设置布尔值来实现。

将页眉/页脚定义为

class PDF extends FPDF {
    function Header() {
        if (!$this->skipHeader) {
            // ...
        }
    }

    function Footer() {
        if (!$this->skipFooter) {
            // ...
        }
    }
}

然后,在初始化pdf时,请确保将这些布尔值设置为false,这样通常会得到页眉/页脚。

$pdf = new PDF();
$pdf->skipHeader = false;
$pdf->skipFooter = false;

一旦您确实要跳过页眉或页脚,请将相应的布尔值设置为true

$pdf->AddPage();
$pdf->skipHeader = true;
$pdf->AddPageContents();

如果要在下一页上设置页眉/页脚,请记住将它们设置为false!