我已经看到了很多关于此的问题,但没有明确的答案。我使用FPDF动态创建PDF格式的数据库,我只想在最后一页上有一个页脚,因为它的值基于DB值,PDF可能是2,3,4页长。所以我开始乱搞FPDF的底脚,如此
function Footer()
{
$this->SetY(-15);
$this->SetFont('Arial','I',8);
//Page number
$pagenumber = '{nb}';
if($this->PageNo() == 2){
$this->Cell(173,10, ' FOOTER TEST - '.$pagenumber, 0, 0);
}
}
这重塑了价值" FOOTER TEST - 2"在第二页上,如果我将if设置为"< = 2"将在第一页和第二页上添加相同的内容,太棒了!它将$ pagenumber识别为2,或者如果我将3页作为3,那么它可以看到我有多页,但是,当我将代码更改为:
function Footer()
{
$this->SetY(-15);
$this->SetFont('Arial','I',8);
//Page number
$pagenumber = '{nb}';
if($this->PageNo() == $pagenumber){
$this->Cell(173,10, ' FOOTER TEST - '.$pagenumber, 0, 0);
}
}
认为它输出一次最后一页,将其添加到if语句将使其工作,它不显示任何内容,如if语句不能识别$ pagenumber的值,这是因为它是一个字符串或int试图与相反的或其他东西进行比较?
任何帮助大大占用。
伊恩
答案 0 :(得分:3)
{nb}作为后期替换完成(因为它不知道之前有多少页),而页面完成后输出页脚,最好的选择是设置完成输出所有内容然后检查页脚中的标志
时,类上的标志为truefunction Footer()
{
$this->SetY(-15);
$this->SetFont('Arial','I',8);
//Page number
if($this->isFinished){
$this->Cell(173,10, ' FOOTER TEST - {nb}', 0, 0);
}
}
然后在您的PDF编写代码中
...
$pdf->isFinished = true;
希望这有帮助
答案 1 :(得分:1)
如果您使用MultiCell()和AutoPageBreak,您正在编写的内容可能会创建自动分页符。
在这种情况下,在MultiCell()调用之前设置布尔标志可以创建最后两页预期的最后一个页脚,而不是最后一页。
在代码的最后,当您在文档中没有任何其他内容时,请执行以下操作:
$this->InFooter = true;
$this->SetY(-15);
$this->Write(5, "My end footer text");
$this->InFooter = false;
InFooter boolean告诉FPDF我们在页脚中写入内容,而FPDF不会自动创建分页符。
需要SetY(),否则您的内容将被写在文档之外。
答案 2 :(得分:0)
我知道我在这里参加派对有点晚了但是当我遇到同样的问题时,那是因为我没有调用AliasNbPages()
函数。他们提供的示例似乎并没有将其包含在他们的代码中!
我在制作新的pdf后立即调用它:
$pdf = new PDF();
$pdf->AliasNbPages();
现在我的{nb}被替换为总页数!
答案 3 :(得分:0)
多年后对于遇到这个问题的人:丹尼(Danny)的回答还可以用于跳过任意页面上的页脚(或页眉)。您只需要确保在添加页面后将skip-Boolean设置为true,然后添加内容,然后在需要下一页的页脚时将其设置回false。
$pdf = new PDF();
$pdf->isFinished = false;
// [...]
$pdf->AddPage();
$pdf->isFinished = true;
// Add your page contents here
$pdf->isFinished = false;
我发布了更长的版本here。
我希望将其添加为Danny答案的注释。但是,由于是新手并且声誉低下,我不得不发布自己的帖子。 :/
答案 4 :(得分:0)
我也迟到了派对-大声笑保罗在正确的轨道上。我修改了他的解决方案以使用while循环。
$pdf = new PDF();
$pdf->isFinished = false;
$pdf->AddPage();
// Add your page contents here
while($row1 = $rs1->fetch_assoc()){
// output...
$pdf->isFinished = false;
}
$pdf->isFinished = true;
现在在页脚中...
function Footer()
{
$this->SetY(-15);
if($this->isFinished){
$this->Cell(195,10, "Signature:_______________________________", 0, 0,'R');
}
}
我希望这对某人有帮助。