เมื่อใช้งาน fpdf ครั้งแรกจะไม่สามารถใช้ภาษาไทยได้ เนื่องจาก Class fpdf ไม่ได้เตรียม font ที่รองรับภาษาไทยไว้
ดังนั้นเราจะต้องทำการติดตั้ง font เพิ่มเติมเข้า ซึ่งสามารถโหลดได้จาก ที่นี่
1) ให้ขยายไฟล์ fpdf_fontThai.zip ออกจะได้ไฟล์ที่มีนามสกุล .php และ .z
ดังนั้นเราจะต้องทำการติดตั้ง font เพิ่มเติมเข้า ซึ่งสามารถโหลดได้จาก ที่นี่
1) ให้ขยายไฟล์ fpdf_fontThai.zip ออกจะได้ไฟล์ที่มีนามสกุล .php และ .z
2) ทำการ Copy ไฟล์ทั้งหมดไปไว้ที่ Folder font
3) font ที่เราเพิ่มเข้าไปมีชื่อเรียกและคุณสมบัติดังต่อไปนี้
N = Normal ตัวอักษรปกติ เวลาใช้ให้ใส่ค่าว่าง
ฺB = Bold ตัวอักษรหนา
I = Italic ตัวอักษรเอียง
IB = Italic Bold or Bold Italic ตัวอักษรหนาเอียง
N = Normal ตัวอักษรปกติ เวลาใช้ให้ใส่ค่าว่าง
ฺB = Bold ตัวอักษรหนา
I = Italic ตัวอักษรเอียง
IB = Italic Bold or Bold Italic ตัวอักษรหนาเอียง
- AngsanaNew (N,B,I,IB)
- CordiaNew (N,B,I,IB)
- Tahoma (N,B)
- BrowalliaNew (N,B,I,IB)
- KoHmu (N)
- KoHmu2 (N)
- KoHmu3 (N)
- MicrosoftSansSerif (N)
- PLE_Cara (N)
- PLE_Care (N,B)
- PLE_Joy (N)
- PLE_Tom (N,B)
- PLE_TomOutline (N)
- PLE_TomWide (N)
- DilleniaUPC (N,B,I,IB)
- EucrosiaUPC (N,B,I,IB)
- FreesiaUPC (N,B,I,IB)
- IrisUPC (N,B,I,IB)
- JasmineUPC (N,B,I,IB)
- KodchiangUPC (N,B,I,IB)
- LilyUPC (N,B,I,IB)
4) ทดสอบผลการทำงานจาก font ที่เพิ่มเข้าไปโดยสร้างไฟล์ชื่อ exam_2.php และใส่ Code ดังต่อไปนี้
require(‘fpdf.php’);
$pdf=new FPDF();
$pdf->AddPage();
/*
เพิ่ม Font เข้ามาเท่าที่จะใช้เพราะจะทำ
ให้ไฟล์ pdf ของเรามีขนาดใหญ่
*/
$pdf->AddFont(‘AngsanaNew’,”,‘angsa.php’);
$pdf->AddFont(‘AngsanaNew’,‘B’,‘angsab.php’);
$pdf->AddFont(‘AngsanaNew’,‘I’,‘angsai.php’);
//กำหนดแบบอักษร
$pdf->SetFont(‘AngsanaNew’,”,18);
$pdf->Cell(0,10,‘ตัวอย่าง Font ภาษาไทย’);
$pdf->Ln(8);
$pdf->SetFont(‘AngsanaNew’,‘B’,20);
$pdf->Cell(0,10,‘Font ภาษาไทย AngsanaNew 20 ตัวหนา’);
$pdf->Ln(8);
$pdf->SetFont(‘AngsanaNew’,‘I’,25);
$pdf->Cell(0,10,‘Font ภาษาไทย AngsanaNew 25 ตัวเอียง’);$pdf->Output();
$pdf=new FPDF();
$pdf->AddPage();
/*
เพิ่ม Font เข้ามาเท่าที่จะใช้เพราะจะทำ
ให้ไฟล์ pdf ของเรามีขนาดใหญ่
*/
$pdf->AddFont(‘AngsanaNew’,”,‘angsa.php’);
$pdf->AddFont(‘AngsanaNew’,‘B’,‘angsab.php’);
$pdf->AddFont(‘AngsanaNew’,‘I’,‘angsai.php’);
//กำหนดแบบอักษร
$pdf->SetFont(‘AngsanaNew’,”,18);
$pdf->Cell(0,10,‘ตัวอย่าง Font ภาษาไทย’);
$pdf->Ln(8);
$pdf->SetFont(‘AngsanaNew’,‘B’,20);
$pdf->Cell(0,10,‘Font ภาษาไทย AngsanaNew 20 ตัวหนา’);
$pdf->Ln(8);
$pdf->SetFont(‘AngsanaNew’,‘I’,25);
$pdf->Cell(0,10,‘Font ภาษาไทย AngsanaNew 25 ตัวเอียง’);$pdf->Output();
5) ผลการทดสอบ
<?php require('fpdf.php'); class PDF extends FPDF { //Page header function Header() { //Logo $this->Image('logo_pb.png',10,8,33); //Arial bold 15 $this->SetFont('Arial','B',15); //Move to the right $this->Cell(80); //Title $this->Cell(30,10,'Title',1,0,'C'); //Line break $this->Ln(20); } //Page footer function Footer() { //Position at 1.5 cm from bottom $this->SetY(-15); //Arial italic 8 $this->SetFont('Arial','I',8); //Page number $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C'); } } //Instanciation of inherited class $pdf=new PDF(); $pdf->AliasNbPages(); $pdf->AddPage(); $pdf->SetFont('Times','',12); for($i=1;$i<=40;$i++) $pdf->Cell(0,10,'Printing line number '.$i,0,1); $pdf->Output(); ?>
FPDF เป็นคลาส PHP ที่ช่วยในการสร้างเอกสาร PDF ตัวหนึ่ง โดยทุกคนสามารถนำคลาสตัวนี้มาใช้และปรับแก้ไขโค๊ดได้อย่างอิสระ เพื่อให้รองรับการใช้งานของเรา ด้วยเหตุนี้จึงมีคนนิยมนำคลาสตัวนี้มาใช้ในการสร้างเอกสาร PDF และเพื่อให้ทุกคนได้เห็นว่าการใช้ FPDF นั้นง่ายเพียงใดในการสร้างเอกสารPDF ขึ้นมาสักชิ้นหนึ่ง โดยในขั้นแรกให้ท่านดาวห์โหลดไฟล์ ที่ผมได้ทำการรวบรวมสคลิป FPDF ต่างๆ ที่มีผู้สร้างไว้ให้ใช้กันฟรี เพื่อให้รองรับกับงานที่เราทำมากที่สุดได้ที่นี่
แต่ถ้าท่านใดสนใจ ดาวห์โหลดสคลิปตัวอื่นเพิ่มเติ่มได้ที่นี่
ในการสร้างเอกสาร PDF เปล่าขึ้นมาตัวหนึ่ง
1. ให้ทำการ require คลาส FPDF
2. ให้ทำการสร้างคลาส FPDF ในไฟล์ของเรา
*FPDF([string orientation [, string unit [, mixed format]]])
Orientation กำหนดรูปแบบการแสดงเอกสาร โดยมีค่า 2 ค่า ได้แก่
- P or Portrait (แนวตั้ง) ‘default’
- L or Lanscape (แนวนอน)
Unit กำหนดหน่วยวัด โดยมีค่า 4 ค่า ได้แก่
- pt: point
- mm: millimeter ‘default’
- cm: centimeter
- in: inch
Format กำหนดขนาดเอกสาร PDF โดยมีค่าดังนี้
- A3
- A4 ‘default’
- A5
- Letter
- Legal
- Array(w,h) เป็นขนาดเอกสารที่เราสามารถกำหนดได้เอง w = ความกว้าง, h =ความยาว
3. ให้ใช้ฟังก์ชัน AddFont เพื่อนำไฟล์ฟอต์นมาใช้ในเอกสาร
*AddFont(string family [, string style [, string file]])
Family ชื่อฟอต์นที่เรานำมาใช้
Style รูปแบบในการแสดงผลของฟอต์น โดยมีค่าดังนี้
- empty string: regular ‘default’
- B: bold
- I: italic
- BI or IB: bold italic
File ชื่อไฟล์ฟอต์นโดยต้องห้ามมีช่องว่างในชื่อฟอต์น
4. ให้ใช้ฟังก์ชัน AddPage เพื่อสร้างหน้าเอกสารขึ้นมา
*AddPage([string orientation ,[ mixed format]])
Orientation กำหนดรูปแบบการแสดงเอกสาร โดยมีค่า 2 ค่า ได้แก่
- P or Portrait (แนวตั้ง) ‘default’
- L or Lanscape (แนวนอน)
Unit กำหนดหน่วยวัด โดยมีค่า 4 ค่า ได้แก่
- pt: point
- mm: millimeter ‘default’
- cm: centimeter
- in: inch
5. ทำการ SetFont ตามฟอต์นที่เราได้ทำการ AddFont เข้ามา
*SetFont(string family [, string style [, float size]])
Family ชื่อฟอต์นที่เรานำมาใช้
Style รูปแบบในการแสดงผลของฟอต์น โดยมีค่าดังนี้
- empty string: regular ‘default’
- B: bold
- I: italic
- BI or IB: bold italic
Size ขนาดของฟอต์น
6. ทำการใช้ฟังก์ชัน ConvToThai() ในการแปลงข้อความภาษาไทยให้ FPDF รองรับ
* ConvToThai(string txt[,string $out_charset [, string $in_charset] ])
7. ใช้ฟังก์ชัน Text ในการพิมพ์ข้อความในเอกสาร PDF
*Text(float x, float y, string txt)
x ตำแหน่งแกน x ที่ต้องการพิมพ์ข้อความ
y ตำแหน่งแกน y ที่ต้องการพิมพ์ข้อความ
txt ข้อความที่ต้องการพิมพ์
8. ขั้นตอนสุดท้ายให้ใช้ฟังก์ชัน Output ในการแสดง เอกสาร FPDF
*Output([string name, string dest])
Name ชื่อไฟล์เอกสาร PDF ‘default doc.pdf’
Dest กำหนดรูปแบบการส่งออกเอกสาร
- I: เป็นการส่งผ่านบราวเซอร์ โดยใช้ plug-in ของบราวเซอร์
- D: ดาวห์โหลดไฟล์โดยใช้ชื่อที่ได้กำหนดหนดไว้
- F: บันทึกไฟล์ลงในเครื่อง Local
- S: ส่งเอกสารออกในรูปแบบ string
ไฟล์ตัวอย่างNew_Blank_Page.php
หรือต้องการอ่านเพิ่มเติ่มได้ที่ http://www.fpdf.org
"ตอนต่อไปพบการการแทรกเลขหน้า การกำหนดขอบกระดาษ การสร้างหัวกระดาษและท้ายกระดาษ"
<?php
include('fc_all.php');
$date1=mktime(0, 0, 0, date("m") , date("d")-1, date("Y"));
$date2=mktime(0, 0, 0, date("m") , date("d")-2, date("Y"));
$date3=mktime(0, 0, 0, date("m") , date("d"), date("Y"));
$today =date("Y-m-d",$date3);
$today1 =date("Y-m-d",$date1);
$today_thai=date2thai(date('Y-m-d',$date1));
$today_thai_next=date2thai(date('Y-m-d',$date3));
$today_thai_yesterday=date2thai(date('Y-m-d',$date2));
$yesterday =date("Ymd",$date2);
$year = substr($today, 0,4);
$month = substr($today, 4, 2);
$day = substr($today, 6, 2);
$day_month=$day."/".$month;
$date_desc="เมื่อวานนี้";
$date_first=mktime(0, 0, 0,$month , 1, $year);
$date_first=date("Ymd",$date_first);
//----------------------------------------------------------------------
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header ("Pragma: no-cache");
header("Expires: 0");
//----------------------------------------------------------------------
define('FPDF_FONTPATH','font/');
require('fpdf.php');
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
//header ("Pragma: no-cache");
//header("Expires: 0");
class PDF extends FPDF
{
//X-Y Text Data
function TextData($x,$y,$text,$font,$fsyte,$fsize)
{
$this->SetFont($font,$fsyte,$fsize);
$this->Text($x,$y,$text);
}
function Header()
{
$this->Image('images/logo.jpg',90,10,30,34);
$this->Ln(20);
}
//Page footer
function Footer()
{
//Position at 2.5 cm from bottom
$this->SetY(-25);
$this->SetFont('Cordiau','',14);
//Page number
$this->Cell(0,10,'หน้าที่ '.$this->PageNo().'/{nb} ',0,0,'R');
}
}
$pdf=new PDF();
$pdf->SetTitle("Report data 24:00 Date: ".decode_date($today));
$pdf->SetKeywords("Report");
$pdf->SetAuthor("Sirikit Hydro Plant");
$pdf->SetSubject("Report Sirikit Hydro Plant");
$pdf->SetCreator("Hydro Database System V 3.2");
$pdf->SetTopMargin(25);
$pdf->AliasNbPages();
$pdf->AddFont('Cordiau','B','cordiaub.php');
$pdf->AddFont('Cordiau','','cordiau.php');
$pdf->AddPage();
//------------แบบบันทึกการไฟฟ้า-----------------
//$pdf->TextData(65,15,'SIRIKIT HYDRO PLANT DATA 24:00 น','Cordiau','B',18);
//$pdf->Image('images/egat_bw_logo_big.jpg',10,10,138,146);
//$jpg_name = 'images/egat_bw_logo_big.jpg';
$pdf->TextData(52,50,'รายงานสถานการณ์น้ำประจำวันเขื่อนสิริกิติ์','Cordiau','B',24);
$pdf->TextData(60,58,'ข้อมูลน้ำวันที่ '. ThaiEachDate($today1).' เวลา 24:00 น. ','Cordiau','B',18);
//$pdf->TextData(90,25,'ลงสมุดเดินเครื่อง','Cordiau','B',18);
$pdf->TextData(50,35,'','Cordiau','',14);
$pdf->SetXY(20,60);
$pdf->Cell(80,7,' ระดับน้ำเหนือเขื่อน',1,0,'L');
$pdf->Cell(30,7,'149.79',1,0,'R');
$pdf->Cell(60,7,' เมตร รทก. ',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' ปริมาณน้ำในเขื่อน',1,0,'L');
$pdf->Cell(30,7,'6,636.90',1,0,'R');
$pdf->Cell(60,7,' ล้านลูกบาศก์เมตร',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' คิดเป็น',1,0,'L');
$pdf->Cell(30,7,'69.79',1,0,'R');
$pdf->Cell(60,7,' เปอร์เซ็นต์ ',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' ปริมาณน้ำที่สามารถใช้งานได้ ',1,0,'L');
$pdf->Cell(30,7,'3,786.90',1,0,'R');
$pdf->Cell(60,7,' ล้านลูกบาศก์เมตร',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' คิดเป็น',1,0,'L');
$pdf->Cell(30,7,'56.86',1,0,'R');
$pdf->Cell(60,7,' เปอร์เซ็นต์ ',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' ปริมาณน้ำไหลเข้าเขื่อน ',1,0,'L');
$pdf->Cell(30,7,'4.46' ,1,0,'R');
$pdf->Cell(60,7,' ล้านลูกบาศก์เมตร ',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' ปล่อยน้ำเพื่อชลประทาน',1,0,'L');
$pdf->Cell(30,7,'45.13',1,0,'R');
$pdf->Cell(60,7,' ล้านลูกบาศก์เมตร ',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' สามารถรับได้อีก',1,0,'L');
$pdf->Cell(30,7,'2873.10' ,1,0,'R');
$pdf->Cell(60,7,' ล้านลูกบาศก์เมตร ',1,0,'L');
$pdf->Ln();
$pdf->Ln();
$pdf->TextData(60,130,'ข้อมูลน้ำวันที่ '. ThaiEachDate($today).' เวลา 24:00 น. ','Cordiau','B',18);
$pdf->TextData(50,140,'','Cordiau','',14);
$pdf->SetXY(20,133);
$pdf->Cell(80,7,' ระดับน้ำเหนือเขื่อน',1,0,'L');
$pdf->Cell(30,7,'149.79',1,0,'R');
$pdf->Cell(60,7,' เมตร รทก. ',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' ปริมาณน้ำในเขื่อน',1,0,'L');
$pdf->Cell(30,7,'6,636.90',1,0,'R');
$pdf->Cell(60,7,' ล้านลูกบาศก์เมตร',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' คิดเป็น',1,0,'L');
$pdf->Cell(30,7,'69.79',1,0,'R');
$pdf->Cell(60,7,' เปอร์เซ็นต์ ',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' ปริมาณน้ำที่สามารถใช้งานได้ ',1,0,'L');
$pdf->Cell(30,7,'3,786.90',1,0,'R');
$pdf->Cell(60,7,' ล้านลูกบาศก์เมตร',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' คิดเป็น',1,0,'L');
$pdf->Cell(30,7,'56.86',1,0,'R');
$pdf->Cell(60,7,' เปอร์เซ็นต์ ',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' ปริมาณน้ำไหลเข้าเขื่อน ',1,0,'L');
$pdf->Cell(30,7,'4.46' ,1,0,'R');
$pdf->Cell(60,7,' ล้านลูกบาศก์เมตร ',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' ปล่อยน้ำเพื่อชลประทาน',1,0,'L');
$pdf->Cell(30,7,'45.13',1,0,'R');
$pdf->Cell(60,7,' ล้านลูกบาศก์เมตร ',1,0,'L');
$pdf->Ln();
$pdf->SetX(20);
$pdf->Cell(80,7,' สามารถรับได้อีก',1,0,'L');
$pdf->Cell(30,7,'2873.10' ,1,0,'R');
$pdf->Cell(60,7,' ล้านลูกบาศก์เมตร ',1,0,'L');
$pdf->Ln();
$pdf->SetXY(55,200);
$pdf->TextData(50,140,'','Cordiau','B',18);
$pdf->Cell(120,10,'แผนการระบายน้ำวันนี้ = 0.00 ล้านลูกบาศก์เมตร',1,0,'L');
$pdf->Ln();
$pdf->SetX(55);
$pdf->Cell(120,10,'แผนการระบายน้ำวันพรุ่งนี้ = 0.00 ล้านลูกบาศก์เมตร',1,0,'L');
$pdf->Ln();
$pdf->Ln();
//-----------------------------------------------
$pdf->Output();
//--------------------------------------------------------------------------
?>
ไม่มีความคิดเห็น:
แสดงความคิดเห็น