
การพิมพ์ภาษาไทยลงไปในเอกสาร pdf ด้วย fpdf นั้น จำเป็นจะต้องสร้างฟอนต์ภาษาไทยขึ้นมาก่อน ซึ่งก็เอาฟอนต์จากวินโดวนี่แหละครับไปผ่านกระบวนการบางอย่าง ในเว็บเขาแนะนำวิธีสร้างไว้อย่างละเอียด
แต่อย่าเพิ่งตกใจนะครับ ผมมีฟอนต์ให้ท่านดาวน์โหลดไปใช้ได้เลย ผมได้รับมาจากน้องเด่นแห่ง minddesizn.com ต้องขอขอบคุณไว้ ณ ตรงนี้ครับ
ไฟล์ที่ท่านดาวน์โหลดไปประกอบด้วยฟอนต์ angsana,cordia และอีกหลายฟอนต์ครับ ผมไม่ค่อยรู้จักเท่าไร เพราะใช้แต่ angsana ยันเต มี angsana ผมก็สบายใจแล้ว ท่านดาวน์โหลดไปแล้วแตกซิปออก ลองเอานะครับว่ามีฟอนต์อะไรบ้าง จากชื่อน่าจะเดาไม่ยาก หรือถ้าไม่รู้จักก็ลองใช้ครับ ถ้าสวยชอบใจ ก็ใช้ต่อ ถ้าไม่ถูกใจก็อย่าไปใช้ Try it by yourself
การเขียนโค้ดจะมีกระบวนการดังนี้
1. ต้องตั้งชื่อตัวแปร CONSTANT เพื่อชี้พาธที่อยู่ฟอนต์
2. เพิ่มฟอนต์เข้าไปใน fpdf
3. เรียกใช้
ดูโค้ดกันก่อนครับ ตอนท้ายผมจะอธิบายคำสั่งที่ใช้
<?php define('FPDF_FONTPATH','fonts/'); require('fpdf.php'); $pdf=new FPDF(); // เพิ่มฟอนต์ภาษาไทยเข้ามา ตัวธรรมดา กำหนด ชื่อ เป็น angsana $pdf->AddFont('angsana','','angsa.php'); // เพิ่มฟอนต์ภาษาไทยเข้ามา ตัวหนา กำหนด ชื่อ เป็น angsana $pdf->AddFont('angsana','B','angsab.php'); // เพิ่มฟอนต์ภาษาไทยเข้ามา ตัวหนา กำหนด ชื่อ เป็น angsana $pdf->AddFont('angsana','I','angsai.php'); // เพิ่มฟอนต์ภาษาไทยเข้ามา ตัวหนา กำหนด ชื่อ เป็น angsana $pdf->AddFont('angsana','BI','angsaz.php'); //สร้างหน้าเอกสาร $pdf->AddPage(); // กำหนดฟอนต์ที่จะใช้ อังสนา ตัวธรรมดา ขนาด 12 $pdf->SetFont('angsana','',12); // พิมพ์ข้อความลงเอกสาร $pdf->setXY( 10, 10 ); $pdf->MultiCell( 0 , 0 , iconv( 'UTF-8','cp874' , 'อังสนา ตัวธรรมดา ขนาด 12' ) ); $pdf->SetFont('angsana','B',16); $pdf->setXY( 10, 20 ); $pdf->MultiCell( 0 , 0 , iconv( 'UTF-8','cp874' , 'อังสนา ตัวหนา ขนาด 16' ) ); $pdf->SetFont('angsana','I',24); $pdf->setXY( 10, 30 ); $pdf->MultiCell( 0 , 0 , iconv( 'UTF-8','cp874' , 'อังสนา ตัวเอียง ขนาด 24' ) ); $pdf->SetFont('angsana','BI',32); $pdf->setXY( 10, 40 ); $pdf->MultiCell( 0 , 0 , iconv( 'UTF-8','cp874' , 'อังสนา ตัวหนาเอียง ขนาด 32' ) ); $pdf->Output(); ?>
fpdf จะใช้ตัวแปร constant ชื่อ FPDF_FONTPATH เป็นตัวชี้ที่อยู่ฟอนต์ จำเป็นจะต้องประกาศและกำหนดพาธให้ถูกต้อง ปิดท้ายด้วยเครื่องหมาย slash( / )
define('FPDF_FONTPATH','fonts/');AddFont(string family [, string style [, string file]])
คำอธิบาย
สำหรับเพิ่มฟอนต์ที่ต้องการใช้งานในเอกสาร ท่านอาจจะงงๆว่า เรากำหนดได้เองเลยเหรอให้มันหนามันเอียง เปล่าหรอก พารามิเตอร์ตัวที่ 2 นั้นเป็นเหมือน ตัวอธิบายว่า ไฟล์ ในพารามิเตอร์ตัวที่ 3 นั้นเป็นฟอนต์ลักษณะไหน มันจะสัมพันธ์ไปถึงคำสั่ง SetFont ลองดูโค้ดแล้วนั่งคิดสักชั่วอึดใจประมาณธูปไหม้หมดดอก ท่านก็จะเข้าใจ
พารามิเตอร์ตัวที่ 3 เป็นชื่อไฟล์ที่ลงท้ายด้วย .php ถ้าท่านเปิดโฟลเดอร์ฟอนต์ที่ดาวน์โหลดไปตอนต้นบทความนี้ ท่านจะเห็น angsa.php (ตัวปกติ) angsab.php (ตัวหนา ลงท้ายด้วย b) angsai.php (ตัวเอียง ลงท้ายด้วย i) angsaz.php (ตัวหนาเอียง ลงท้ายด้วย z) และฟ้อนต์ชื่ออื่นในลักษณะนี้ ให้จำไว้ว่า ถ้าลงท้ายด้วย b มันเป็นฟอนต์ตัวหนา ลงท้ายด้วย i เป็นฟอนต์ตัวเอียง ลงท้ายด้วย z เป็นฟอนต์ตัวหนาเอียง
พารามิเตอร์
family : กำหนดชื่อ เราจะได้เรียกใช้ภายหลังง่ายๆ angsana ตัวปกติ ตัวหนา ตัวเอียง ตัวเอียงหนา จะใช้ชื่อ angsana เหมือนกัน
style : ลักษณะของฟอนต์
- ค่าที่เป็นไปได้คือ
- empty string – ตัวอักษรปกติ empty string ก็คือ ‘’ ไม่มีอะไรเลยในฟันหนู
- B: ตัวหนา
- I: ตัวเอียง
- BI หรือ IB: ตัวหนาเอียง
file : ไฟล์ฟอนต์ ถ้าพารามิเตอร์แรกท่านใช้ angsana พารามิเตอร์ตัวที่ 2 เป็นตัวหนา พารามิเตอร์ตัวนี้ก็ต้องชี้ไปที่ไฟล์ angsab.php
SetFont(string family [, string style [, float size]])
คำอธิบาย
กำหนดฟอนต์ที่จะใช้ เมื่อเราใช้คำสั่งนี้ครั้งหนึ่งแล้ว เวลาเราใช้คำสั่งพิมพ์ข้อความลงในเอกสาร มันก็จะใช้ฟอนต์นี้ ไปจนกว่าจะเจอคำสั่งนี้อีกครั้ง
พารามิเตอร์
family : ชื่อฟอนต์ที่ใช้คำสั่ง AddFont กำหนดไว้
style : ลักษณะของฟอนต์
- ค่าที่เป็นไปได้คือ
- empty string – ตัวอักษรปกติ
- B: ตัวหนา
- I: ตัวเอียง
- BI หรือ IB: ตัวหนาเอียง
size : ขนาดฟอนต์ที่จะพิมพ์ลงในเอกสาร
คำสั่ง AddFont กับ SetFont นั้นจะใช้งานควบคู่กัน และสัมพันธ์กันอยู่ ลองดูโค้ดด้านบนและหลับตาจินตนการดีๆ ก็จะเข้าใจ
fpdf นั้นมีข้อเสียเล็กๆอยู่ข้อหนึ่งคือ ยังไม่สนับสนุน utf-8 แต่ก็มีทางออกโดยใช้คำสั่ง iconv แปลงเอา ถึงจะมีความไม่สะดวกเล็กๆอยู่บ้าง แต่ผมเชื่อว่าสิ่งที่ได้จากการใช้ fpdf นั้นคุ้มครับ ยิ่งเมื่อนึกถึงความง่ายในการใช้งานแล้ว มันกลบความไม่สะดวกเล็กๆนี้ไปเลย
$pdf->MultiCell( 0 , 0 , iconv( 'UTF-8','cp874' , 'อังสนา ตัวหนาเอียง ขนาด 32' ) );
บทความน่าสนใจ
- FPDF บทที่ 12 พิมพ์ข้อความลงไปในเอกสารด้วยคำสั่ง write
- FPDF บทที่ 11 พิมพ์ข้อความลงไปในเอกสารด้วยคำสั่ง text
- FPDF บทที่ 15 การจัดข้อความ ชิดซ้าย ขวา ตรงกลาง
- FPDF บทที่ 13 พิมพ์ข้อความลงไปในเอกสารด้วยคำสั่ง Cell
- FPDF บทที่ 14 พิมพ์ข้อความลงไปในเอกสารด้วยคำสั่ง MultiCell
ผู้เขียน: วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย
เว็บไซต์ :http://www.select2web.com
งานเล็กๆก็ยิ่งใหญ่ได้ ถ้าอยู่ในที่ๆเหมาะสม
มี 2 ความเห็น ในบทความเรื่อง “FPDF บทที่ 10 ภาษาไทย”
แสดงความเห็น
Categories
- 1 week 1 Source (2)
- AppServ (10)
- Array (2)
- Codeigniter (1)
- Computer (7)
- CSS (9)
- Dreamweaver (7)
- Firefox (7)
- Form (2)
- FPDF (15)
- General (31)
- HTML (2)
- Javascript (6)
- jQuery (86)
- Mac (10)
- MySQL (15)
- Navicat (9)
- Other (58)
- PHP (97)
- PHP-function (12)
- Program (8)
- SMF (15)
- SQL (20)
- Theme (1)
- TinyMCE (7)
- webservice (1)
- Wordpress (18)
- คอมฯ ทั่วไป (6)
-
Recent Posts
- akismet ปลักอินกรองแสปมของเวิร์ดเพรส
- WP-CMS Post Control ปลักอินสำหรับซ่อนสิ่งที่ไม่ต้องการในเวิร์ดเพรส
- wordpress flickr manager ปลักอินสำหรับอัปโหลดภาพเก็บที่ flickr
- picpick โปรแกรมที่เว็บโปรแกรมเมอร์ต้องมีไว้ติดเครื่อง
- ขอความเห็น
- todoist โปรแกรมจดรายการสิ่งที่ต้องทำสุดเจ๋ง
- wordpress google xml sitemap หนึ่งในปลักอินที่ท่านต้องติดตั้ง
- แนะนำเว็บให้ความรู้การเขียนโปรแกรมโคตะระเด็ด
- โปรแกรมจดรายการสิ่งที่จะต้องทำ
- แจกภาพปุ่มเอาไปตกแต่งเว็บ
- วิธีสร้างเว็บให้ติดอันดับหนึ่ง
- wordpress ปิงผู้ปิดทองหลังพระ
- วิธีเปิด notepad อย่างรวดเร็ว
- วิธีดึงข้อมูลออกจากฐานข้อมูลของเวิร์ดเพรส แบบสุ่ม
- หารายละเอียดโดเมน
Tags
AppServ Array Back to the basic bug calendar CAPTCHA chart CSS Dreamveawer eclipse error firebug Firefox firefox plugin FPDF General google helios HTML icons Javascript jQuery jquery plugin jquery slide jQuery tutorial jQuery UI Mac MySQL Other pdt PHP phpmailer programming slide slide show SMF smf themes smf themes download smf themes free smf themes thai SQL sql function tooltip Wordpress wordpress plugin
ทดลองเอาโค้ด มาลองดู มันขึ้น เป็น
?????? ????????? ???? 12
?????? ?????? ???? 16
?????? ???????? ???? 24
?????? ??????????? ???? 32
อย่างนี้อ่ะครับ
ขอบคุณเจ้าของบทความมากครับ
อ่านแล้วเข้าใจง่ายมากเลยครับ สำหรับคนที่เพิ่งเริ่มต้น
ถ้าประเทศไทยมีคนแบบคุณเยอะๆคงจะดี ^^