web-dev-qa-db-ja.com

FPDFすべてのA4サイズのページのフッターでページ番号を取得します

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の値はデータベースから取得されるため、レポートのページ数はわかりません。

11
Jay

縦向きで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');
    }
}
14

私のコメントによると、あなたは置くことができます

$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ページあった場合:)

しかし注意してください

プレースホルダーを使用すると、セルの幅が乱れます。したがって、たとえば90より大きい180ページ幅はもう中間ではありません((placeholderを使用する行。試してみるとわかります:)

14
Dwza