FPDF在每个A4尺寸页面的页脚上获取页码

时间:2014-05-20 07:53:45

标签: php fpdf

我正在使用FPDF创建PDF报告。现在,如何在页面底部的报表的每个页面上生成页码。 以下是生成2页PDF的示例代码。

<?php
        require('fpdf.php');

        $pdf = new FPDF();
        $pdf->AliasNbPages();
        $pdf->AddPage();
        $pdf->SetFont('Arial','',16);

        $start_x=$pdf->GetX(); 
        $current_y = $pdf->GetY();
        $current_x = $pdf->GetX();

        $cell_width = 25; $cell_height=14; 
        $j = 20;  // This value will be coming from Database so we dont know how many pages the report is going to be 
        for ($i = 0; $i<$j ; $i++){
            $pdf->MultiCell($cell_width,$cell_height,'Hello1',1);
            $current_x+=$cell_width;
            $pdf->Ln();
        }

        $pdf->Output();


        ?>

注意:$ j值将来自数据库,因此我们不知道该报告将有多少页。

2 个答案:

答案 0 :(得分:13)

要添加纵向方向的A4页面,请执行以下操作:

$pdf->AddPage("P","A4");

创建一个扩展FPDF类的新类,并覆盖预定义的Footer方法。

示例:

class PDF extends FPDF
{
    function Footer()
    {
        // Go to 1.5 cm from bottom
        $this->SetY(-15);
        // Select Arial italic 8
        $this->SetFont('Arial','I',8);
        // Print centered page number
        $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
    }
}

答案 1 :(得分:12)

根据我的评论,你可以放置

$pdf->PageNo();

在你喜欢的页面上。您还可以向此

添加占位符
$pdf->AliasNbPages(); 

看起来像什么

$pdf->AliasNbPages('{totalPages}');
  

默认情况下为{nb}。没有必要添加占位符

比你可以添加像

这样的页面
$pdf->Cell(0, 5, "Page " . $pdf->PageNo() . "/{totalPages}", 0, 1);

或没有您自己的占位符

$pdf->Cell(0, 5, "Page " . $pdf->PageNo() . "/{nb}", 0, 1);

这会产生例如。

  

第1/10页

如果有10页:)

但要注意

  

使用占位符会弄乱单元格的宽度。所以如果你有例如180页宽度超过90不再是中间在您使用占位符的行。你会看到你是否尝试:)