我在 PHP 中用 FPDF 创建了一个 pdf 文件。当我在其中插入页眉和页脚时,它们会自动显示在 pdf 文件的所有页面上。但我想阻止这些页眉和页脚显示在第一页上,并从 pdf 文件的第二页开始显示它们。我已经搜索了网络,但无法找到解决方案。
换句话说,我想为我用 FPDF 创建的 pdf 报告动态创建一个封面。
谁能给我一些关于如何从 pdf 文件的第一页执行隐藏页眉和页脚任务的提示!
任何帮助将不胜感激!
这是一项简单的任务。尝试以下操作:
class PDF extends FPDF {
...
function Header() {
if ( $this->PageNo() !== 1 ) {
// Add your stuff here
}
}
function Footer() {
if ( $this->PageNo() !== 1 ) {
// Add your stuff here
}
}
}
问题是页脚是在第 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:不指定状态也会让您使用页眉有效减少所需的代码量)
我想为那些不想跳过第一页但不想跳过最后(或任何)页面的人添加一个答案。如果您有动态更改的文本并且无法预见页码,则特别方便。这可以通过在将页面添加到 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!