เนื้อหาต่อไปนี้เป็นแนวทางการนำ tcpdf มาใช้งานใน codeigniter สำหรับ
รองรับการสร้างไฟล์ pdf รองรับการใช้งานภาษาไทย
ก่อนอื่นให้เราไปทำการดาวน์โหลด tcpdf ได้ที่
หรือ
ในที่นี้ดาวน์โหลดตัวเวอร์ชั่น tcpdf_6_2_12.zip ให้เราแตกไฟล์ แล้ว copy โฟลเดอร์
tcpdf ด้านในมาไว้ในโฟลเดอร์ apps > third_party ในโปรเจ็ค codeigniter ของเรา
*ในโฟลเดอร์ tcpdf จะมีโฟลเดอร์ตัวอย่างและโค้ดการใช้งานอยู่ด้านในชื่อ examples เราสามารถลบออกได้
จากนั้นให้สร้างไฟล์ชื่อ Pdf.php ตัวเล็กใหญ่ตามนี้เลย ไว้ในโฟลเดอร์ apps > libraries
และใส่โค้ดดังนี้
1 2 3 4 5 6 7 8 9 | <?php if (!defined( 'BASEPATH' )) exit ( 'No direct script access allowed' ); require_once APPPATH. "/third_party/tcpdf/tcpdf.php" ; class Pdf extends TCPDF { public function __construct() { parent::__construct(); } } |
และสุดท้ายในขั้นตอนการนำไปใช้ ก็สามารถเรียกใช้ด้วยคำสั่ง ของ tcpdf ได้ปกติ
ตัวอย่างทดสอบ ให้เราสร้างไฟล์ชื่อ Genpdf.php ไว้ในโฟลเดอร์ apps > controllers
โค้ดดังนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | <?php defined( 'BASEPATH' ) OR exit ( 'No direct script access allowed' ); class Genpdf extends CI_Controller { public function __construct() { parent::__construct(); $this ->load->library( 'Pdf' ); } public function index() { // สร้าง object สำหรับใช้สร้าง pdf $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8' , false); // กำหนดรายละเอียดของ pdf $pdf ->SetCreator(PDF_CREATOR); $pdf ->SetAuthor( 'Nicola Asuni' ); $pdf ->SetTitle( 'TCPDF Example 001' ); $pdf ->SetSubject( 'TCPDF Tutorial' ); $pdf ->SetKeywords( 'TCPDF, PDF, example, test, guide' ); // กำหนดข้อมูลที่จะแสดงในส่วนของ header และ footer $pdf ->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE. ' 001' , PDF_HEADER_STRING, array (0,64,255), array (0,64,128)); $pdf ->setFooterData( array (0,64,0), array (0,64,128)); // กำหนดรูปแบบของฟอนท์และขนาดฟอนท์ที่ใช้ใน header และ footer $pdf ->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '' , PDF_FONT_SIZE_MAIN)); $pdf ->setFooterFont(Array(PDF_FONT_NAME_DATA, '' , PDF_FONT_SIZE_DATA)); // กำหนดค่าเริ่มต้นของฟอนท์แบบ monospaced $pdf ->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); // กำหนด margins $pdf ->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf ->SetHeaderMargin(PDF_MARGIN_HEADER); $pdf ->SetFooterMargin(PDF_MARGIN_FOOTER); // กำหนดการแบ่งหน้าอัตโนมัติ $pdf ->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); // กำหนดรูปแบบการปรับขนาดของรูปภาพ $pdf ->setImageScale(PDF_IMAGE_SCALE_RATIO); // --------------------------------------------------------- // set default font subsetting mode $pdf ->setFontSubsetting(true); // กำหนดฟอนท์ // ฟอนท์ freeserif รองรับภาษาไทย $pdf ->SetFont( 'freeserif' , '' , 14, '' , true); // เพิ่มหน้า pdf // การกำหนดในส่วนนี้ สามารถปรับรูปแบบต่างๆ ได้ ดูวิธีใช้งานที่คู่มือของ tcpdf เพิ่มเติม $pdf ->AddPage(); // กำหนดเงาของข้อความ $pdf ->setTextShadow( array ( 'enabled' =>true, 'depth_w' =>0.2, 'depth_h' =>0.2, 'color' => array (196,196,196), 'opacity' =>1, 'blend_mode' => 'Normal' )); // กำหนดเนื้อหาข้อมูลที่จะสร้าง pdf ในที่นี้เราจะกำหนดเป็นแบบ html โปรดระวัง EOD; โค้ดสุดท้ายต้องชิดซ้ายไม่เว้นวรรค $html = <<<EOD <h1>ทดสอบข้อความภาษาไทย Welcome to <a href= "http://www.tcpdf.org" style= "text-decoration:none;background-color:#CC0000;color:black;" > <span style= "color:black;" >TC</span><span style= "color:white;" >PDF</span> </a>!</h1> <i>This is the first example of TCPDF library. ทดสอบข้อความภาษาไทย</i> <p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use : <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p> <p>Please check the source code documentation and other examples for further information.</p> <p style= "color:#CC0000;" >TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE ทดสอบข้อความภาษาไทย!</a></p> <span style= "font-size:12px;" >ทดสอบข้อความภาษาไทย มีสระ วรรณยุกต์</span> EOD; // สร้างข้อเนื้อหา pdf ด้วยคำสั่ง writeHTMLCell() $pdf ->writeHTMLCell(0, 0, '' , '' , $html , 0, 1, 0, true, '' , true); // --------------------------------------------------------- // จบการทำงานและแสดงไฟล์ pdf // การกำหนดในส่วนนี้ สามารถปรับรูปแบบต่างๆ ได้ เช่นให้บันทึกเป้นไฟล์ หรือให้แสดง pdf เลย ดูวิธีใช้งานที่คู่มือของ tcpdf เพิ่มเติม $pdf ->Output( 'example_001.pdf' , 'I' ); } } |
ผลลัพธ์
จะได้ผลลัพธ์ดังรูปต่อไปนี้ สำหรับวิธีการใช้งาน tcpdf เราสามารถดูวิธีการปรับค่าต่างๆ ได้ที่เว็บไซต์
หากต้องการใช้งานฟอนท์ อื่นๆ เราสามารถแปลงไฟล์ฟอนท์ ttf สำหรับ tcpdf ได้ที่
ลากไฟล์ฟอนท์ ttf ที่ต้องการไปยังตำแหน่งดังรูป
คลิกเลือก I have rights to convert this font แล้ว
เราจะได้ไฟล์ 3 ไฟล์ ให้เราดาวน์โหลด แล้ว copy ไปไว้ในโฟลเดอร์ tcpdf > fonts
ทั้ง 3 ไฟล์
FamilyName: thsarabunnew คือชื่อฟอนท์ที่เราจะเอาไปใช้งาน
ตัวอย่างใช้งานฟอนท์ thsarabunnew ที่แปลงจากเว็บข้างต้น และเรียกใช้งานใน tcpdf