เวลาเราพิมพ์เอกสารหลายๆหน้า เราก็มักจะมีหมายเลขหน้าและจำนวนหน้าทั้งหมด กำกับไว้ด้วยเสมอ เพื่อจะได้รู้ว่าเอกสารทั้งหมดมีกี่หน้า และปัจจุบันกำลังดูหน้าที่เท่าไร
คำสั่งที่เกี่ยวข้องกับเลขหน้าของ FPDF นั้นมี 2 คำสั่ง คือ
- AliasNbPages
- PageNo
AliasNbPages([string alias])
คำอธิบาย
เป็นคำสั่งสำหรับ กำหนดตัวแปรที่เราต้องการให้เก็บ จำนวนหน้าทั้งหมดของเอกสาร จะได้นำไปพิมพ์บนหน้าเอกสารได้ (ผมไม่เข้าใจว่าทำไมต้องใช้คำสั่ง ทั้งที่จริงถ้าผู้สร้าง FPDF กำหนดตัวแปรสักตัว เก็บไว้ น่าจะง่ายกว่า) โดยคำสั่งนี้ให้เรียกใช้ก่อนสร้างหน้าใหม่ด้วยคำสั่ง AddPage
พารามิเตอร์
alias : (string) ชื่อตัวแปรที่เราต้องการให้เก็บจำนวนหน้าทั้งหมดไว้ โดยมีค่าดีฟอลต์คือ {nb}
PageNo()
คำอธิบาย
คืนค่าตัวเลขหน้าปัจจุบันกลับมา
ตัวอย่างการใช้งาน
Live Demo
เลื่อนลงที่ดูที่ท้ายกระดาษนะครับ
<?php require('fpdf.php'); //ทำการสืบทอดคลาส FPDF ให้เป็นคลาสใหม่ class PDF extends FPDF { //Override คำสั่ง (เมธอด) Footer function Footer() { //นับจากขอบกระดาษด้านล่างขึ้นมา 10 มม. $this->SetY( -10 ); //กำหนดใช้ตัวอักษร Arial ตัวเอียง ขนาด 5 $this->SetFont('Arial','I',5); $this->Cell(0,10, 'Create by www.select2web.com' ,0,0,'L'); //พิมพ์ หมายเลขหน้า ตรงมุมขวาล่าง $this->Cell(0,10, 'page '.$this->PageNo().' of tp' ,0,0,'R'); } } //เรียกใช้งาน เราจะเรียกใช้คลาสใหม่ของเราแทน $pdf=new PDF(); $pdf->AliasNbPages( 'tp' ); $pdf->AddPage(); $pdf->SetFont('Arial','',12); for( $i=0;$i<20;$i++ ){ $pdf->Cell(0,10,'Overcome evil by virtue. '.$i); $pdf->Ln(20); } $pdf->Output(); ?> |
$this->Cell(0,10, 'page '.$this->PageNo().' of tp' ,0,0,'R'); |
ท่านจะเห็นว่า tp จะพิมพ์จำนวนหน้าทั้งหมดออกมา
sirirat says:
12/01/2554 at 12/01/2554
แล้วจะต้องทำอย่างไรค่ะ หากเราต้องการพิมพ์คำว่า tp โดยไม่ให้มันเรียกจำนวนหน้ามาแสดง เพราะตอนนี้นำข้อมูลจากฐานข้อมูลมาแสดง เช่นคำว่า Samutprakarn แล้วมันแสดงเป็น Samu1rakarn ซึ่งมันแสดงผลเพี้ยนเกิดจาก tp ที่เป็นคำสั่งในการแสดงจำนวนหน้า พอจะมีทางแก้ไขมั้ยค่ะ
Pimjai P. says:
25/08/2554 at 25/08/2554
รบกวนสอบถามหน่อยนะคะ เผอิญกำลังรับงานในส่วนของราชการซึ่งถูกบังคับให้ใช้ font THSarabun และตัวเลขต้องเป็นเลขไทยทั้งหมด
คำถาม
1. ค่าของ $pdf->AliasNbPages ไม่ได้เป็นตัวเลขหรือคะ เพราะว่าพอเอาเข้า function เพื่อเปลี่ยนเป็นเลขไทย กลับได้ค่า 1 เหมือนเดิม
Function thainumDigit($num)
{ return str_replace(array( ‘0’ , ‘1’ , ‘2’ , ‘3’ , ‘4’ , ‘5’ , ‘6’ ,’7′ , ‘8’ , ‘9’ ), array( “o” , “๑” , “๒” , “๓” , “๔” , “๕” , “๖” , “๗” , “๘” , “๙” ), $num);
};
2. จะหาไฟล์ font ของ THSarabun.afm , .pfb ได้ที่ไหนคะ เพราะมีแต่ไฟล์ thsarabun.php ซึ่ง addfont ไม่ได้ค่ะ
ขอบคุณค่ะ
administrator says:
25/08/2554 at 25/08/2554
ก็เปลี่ยนคำสั่ง จาก
$pdf->AliasNbPages( ‘tp’ );
เป็นอย่างอื่นครับ เช่น
$pdf->AliasNbPages( ‘pofpdf’ );
ตัวพารามิเตอร์ตัวนั้นเราจะใช้อะไรก็ได้ครับผม
administrator says:
25/08/2554 at 25/08/2554
ลองเปลี่ยนฟังก์ชั่นจาก
Function thainumDigit($num)
{ return str_replace(array( ’0′ , ’1′ , ’2′ , ’3′ , ’4′ , ’5′ , ’6′ ,’7′ , ’8′ , ’9′ ), array( “o” , “๑” , “๒” , “๓” , “๔” , “๕” , “๖” , “๗” , “๘” , “๙” ), $num);
};
เป็น
Function thainumDigit($num)
{
$thainum = array( “o” , “๑” , “๒” , “๓” , “๔” , “๕” , “๖” , “๗” , “๘” , “๙” );
return $thainum[$num];
};