FPDFで決まった単位でのページ番号を表示させる
[ 2010.10.14 ] by King | Categories:PHP
phpのFPDFを使ってPDF出力をする場合のに、
ページ番号を表示させるには
// 現在のページ番号を取得
$page_no = $pdf->PageNo();
// 「現在のページ番号/総ページ数」を表示
$pdf->Cell(0, 4, $page_no.'/{nb}', 0, 0, 'C');
などのようにして出力すれば良いのですが、
ある決まった単位(管理番号ごとなど)で
ページ番号を1から始める、つまり
1ページ目:1/2
2ページ目:2/2
3ページ目:1/4 ←単位の切り替わり
4ページ目:2/4
5ページ目:3/4
・・・
のようにする方法を紹介します。
まず、FPDF本体のfpdf.phpファイルを修正します。
(1)クラスのメンバ変数に総ページ数を保持する配列を定義します。
var $unitPageNo; //Unit page number
(2)function FPDFメソッド内でメンバ変数を初期化しているところで$unitPageNoの初期化も一緒に行ないます。
$this->unitPageNo = array();
(3)総ページ数をセットするメソッドを追加します。
function SetUnitPageNo($page_no, $unit_page_no)
{
// 指定ページ番号($page_no)に表示する総ページ数($unit_page_no)をセット
$this->unitPageNo[$page_no] = $unit_page_no;
}
(4)function _putpagesメソッド内の「if(!empty($this->AliasNbPages))」の条件分岐内の処理を以下に置き換えます。
for($n=1;$n<=$nb;$n++){
$this->pages[$n]=str_replace($this->AliasNbPages, $this->unitPageNo[$n], $this->pages[$n]);
}
あとは、FPDFクラスを呼び出している処理で以下のことを行ないます。
(5)総ページ数を保持する変数を定義し、決まった単位(管理番号など)が変わるタイミングで値を0に戻します。
$unit_page_no = 0;
(6)ページ番号を表示をしている箇所を以下のようにして、総ページ数をセットします。
$unit_page_no++;
$pdf->Cell(0, 4, $unit_page_no.'/{nb}', 0, 0, 'C');
for($i = 0; $i < $unit_page_no; $i++){
$no = $pdf->PageNo() - $i;
$pdf->SetUnitPageNo($no, $unit_page_no);
}
これで、決まった単位ごとのページ数が出力されるようになります。














最近のコメント