15 พฤศจิกายน 2554

FPDF ภาษาไทย

พอดีวันนี้ได้ลองเข้าเว็บ www.fpdf.org ซึ่งได้เห็นเวอร์ชั่นใหม่ของ FPDF คือ เวอร์ชั่น 1.7 เอาลงวันที่ 2011-06-18 ห่างจากเวอร์ชั่นเก่าประมาณ 3 ปีกว่า ก็เลยทดลองโหลดมาใช้งานดูหลังแตกซิป แล้วภายในโฟลเดอร์ของ FPDF เวอร์ชั่น 1.7 จะประกอบไปด้วย

โฟลเดอร์
- doc
- font
- makefont
- tutorial
และไฟล์
- changelog.htm
- FAQ.htm
- fpdf.css
- fpdf.php
- install.txt
- license.txt

ซึ่งส่วนที่น่าจะแตกต่างจากเวอร์ชั่นเก่า คือ โฟล์เดอร์ makefont ถูกย้ายออกมาด้านนอกเพื่อที่จะทำให้ผู้นำไปใช้สามารถสร้างฟอนต์ เพิ่มเติมได้สะดวก ในบทความนี้ ผมก็เลยทดลองสร้างฟอนต์ที่ผมต้องการ โดยผมได้ไปดาวน์โหลดฟอนต์ มาจาก http://www.f0nt.com/release/13-free-fonts-from-sipa/ โดยเลือกไปที่ฟอนต์ TH Srisakdi เพื่อนำมาทดสอบครับ หลังจากได้ตัวฟอนต์ ผมก็ทำการเปลี่ยนชื่อฟอนต์เล็กน้อยจาก TH Srisakdi.ttf เป็น srisakdi.ttf น่ะครับ

ต่อไปก็ให้เราทำการสร้างไฟล์ php ขึ้นมาหนึ่งไฟล์ ผมตั้งชื่อว่า make_font.php เพื่อสร้างฟอนต์สำหรับ FPDF มีโค้ดดังนี้ครับ

<?php
require('makefont/makefont.php'); // แทรกไฟล์สร้างฟอนต์จากโฟลเดอร์ makefont

MakeFont('E:\AppServ\www\fpdf17\srisakdi.ttf','cp874'); // MakeFont('พาธของฟอนต์','Encode ของฟอนต์');
?>

หลังจากสร้างเสร็จ ก็ทำการรันไฟล์ make_font.php เราก็จะได้ไฟล์ srisakdi.php และ ไฟล์ srisakdi.z ให้เราทำการก็อบปี้ แล้วนำไปวางที่โฟลเดอร์ font ที่ FPDF มีมาให้ ซึ่งในนั้นจะมีไฟล์ที่มากับต้นฉบับ ในที่นี้เราไม่ต้องสนใจครับ ให้ทำการวางได้เลย

ทีนี้ก็เข้าสู่กระบวนการทดลองรันฟอนต์ที่เราได้สร้างขึ้นครับ ให้เราทำการสร้างไฟล์มาอีกหนึ่งไฟล์ผมให้ชื่อว่า test_fpdf.php ครับ
แล้วทำการเพิ่มโค้ดนี้เข้าไปครับ

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

class PDF extends FPDF
{
function iconv_text($text)
{
return iconv('utf-8', 'tis-620',$text);
}
}

$pdf = new PDF();
$pdf->AddPage();
$pdf->AddFont('THSrisakdi','','srisakdi.php'); // AddFont('ชื่อฟอนต์','ตัวหน้า/เอียง ฯ','ไฟล์ฟอนต์ที่สร้าง');
$pdf->SetFont('THSrisakdi','',20); // SetFont('ชื่อฟอนต์ที่ใช้งาน','ตัวหนา/เอียง ฯ','ขนาดฟอนต์');
$pdf->Cell(40,10,'The purposes of this Font Computer Program');
$pdf->Ln();
$pdf->SetFont('THSrisakdi','',30); // SetFont('ชื่อฟอนต์ที่ใช้งาน','ตัวหนา/เอียง ฯ','ขนาดฟอนต์');
$pdf->cell(40,10, $pdf->iconv_text('ทดสอบการทำงานของภาษาไทย ในการใช้งานพีดีเอฟ'));
$pdf->Output();
?>

หมายเหตุ ตัว FPDF จะใช้ข้อมูลที่เป็น utf-8 ไม่ได้ฉะนั้นจึงต้องทำการ iconv ก่อนจึงจะเป็นภาษาไทยได้สมบูรณ์ครับ

หน้าตาผลลัพธ์ที่ได้ครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น