3

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

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

谁能给我一些关于如何从 pdf 文件的第一页执行隐藏页眉和页脚任务的提示!

任何帮助将不胜感激!

4

3 回答 3

13

这是一项简单的任务。尝试以下操作:

class PDF extends FPDF {
    ...

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

    function Footer() {
        if ( $this->PageNo() !== 1 ) {
            // Add your stuff here
        }
    }
}
于 2012-08-14T07:47:53.210 回答
5

问题是页脚是在第 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:不指定状态也会让您使用页眉有效减少所需的代码量)

于 2013-09-09T11:47:38.977 回答
2

我想为那些不想跳过第一页但不想跳过最后(或任何)页面的人添加一个答案。如果您有动态更改的文本并且无法预见页码,则特别方便。这可以通过在将页面添加到 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;

一旦您真正想要跳过页眉或页脚,请将相应的 bool 设置为 true

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

如果您想要下一页的页眉/页脚,请记住将它们设置回 false!

于 2019-01-12T11:29:11.753 回答