ในบทนี้เราจะมาติดตั้ง TCPDF แล้วก็ลองสร้างไฟล์ PDF ที่มีคำว่า hello tcpdf อยู่ข้างในกัน สภาพแวดล้อมของเครื่องผม
- ผมใช้วินโดว
- ผมติดตั้ง xampp เป็นตัวจำลองเครื่องให้สามารถเขียน PHP ได้
- ผมติดตั้ง composer ผมจะติดตั้งตัว TCPDF ผ่าน composer
- โฟลเดอร์โปรเจ็กสำหรับทำการทดสอบเขียนโค้ดครั้งนี้อยู่ที่ C:\xampp\htdocs\php-playground
เริ่มต้นเข้าไปที่โฟลเดอร์ C:\xampp\htdocs\php-playground แล้วเปิด command line ขึ้นมา พิมพ์คำสั่งลงไปว่า
composer require tecnickcom/tcpdf
จะได้โฟลเดอร์แบบนี้มา
สร้างไฟล์ index.php ขึ้นมาแล้วเขียนโค้ดลงไปตามนี้
<?php
require_once('vendor/autoload.php');
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
$pdf->setPrintHeader(false);
// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// Add a page
$pdf->AddPage();
// Print text
$pdf->Write(0, 'Hello TCPDF');
// ---------------------------------------------------------
// Close and output PDF document
// This method has several options, check the source code documentation for more information.
$pdf->Output('hello-tcpdf.pdf', 'I');
$pdf->Close();
รันโค้ด ผลลัพธ์ควรจะออกมาแบบนี้
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
คำสั่ง new เป็นการสร้าง instance คลาส TCPDF ขึ้นมาโดยพารามิเตอร์ที่ส่งเข้าไปก็จะเป็น
PDF_PAGE_ORIENTATION : กำหนดกระดาษแบบแนวตั้ง
PDF_UNIT : ใช้หน่วยเป็นมิลลิเมตร กำหนดขนาดกว้างสูงของ cell หรืออะไรที่เกี่ยวกับตัวเลข ไม่ต้องคิดมากใช้หน่วยมิลลิเมตรตามค่าดีฟอลต์ดีแล้ว
PDF_FORMAT : กำหนดขนาดกระดาษ A4
พารามิเตอร์ตัวอื่นๆที่เหลือไว้ใช้ทำอะไร ลองเข้าไปอ่านในฟังก์ชั่นของเขาดูนะครับ
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
คำสั่งกลุ่มนี้เป็นคำสั่งกำหนดข้อมูลของไฟล์ PDF ซึ่งจะไม่แสดงอะไรออกมาข้างหน้าไฟล์ จะต้องคลิกขวาแล้วเลือก properties ถึงจะเห็น ก็ไม่มีอะไร เอาไว้แจ้งข้อมูลว่า สร้างด้วยอะไร, ใครเป็นคนสร้าง, ไตเติลไฟล์คืออะไร, ซับเจ็กคืออะไร, และคีย์เวิร์ดสำหรับค้นหาคืออะไร
$pdf->setPrintHeader(false);
ผมบอกโค้ดว่าไม่ต้องปริ้นต์หัวไฟล์ pdf ออกมา TCPDF นี่เขาสามารถกำหนดเนื้อหาตรง header, footer ได้ เดี๋ยวเราค่อยไปดูรายละเอียดกันในเรื่องการกำหนดหัวไฟล์ ละกัน
// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
เป็นตัวบอกว่า ให้ขึ้นหน้าใหม่อัตโนมัติถ้าข้อความมันยาวเกินหน้ากระดาษ
// Add a page
$pdf->AddPage();
เป็นคำสั่งเพิ่มหน้าใหม่เข้าไป คำสั่งนี้เป็นคำสั่งสำคัญ จะต้องมีเสมอก่อนการพิมพ์ข้อความอะไรออกไปเพราะว่าหน้ากระดาษหน้าแรกจะไม่ถูกสร้างอัตโนมัติ เราจึงต้องเพิ่มไปเอง
$pdf->Write(0, 'Hello TCPDF');
เป็นคำสั่งพิมพ์ข้อความลงไปในหน้ากระดาษ ตัวเลข 0 ที่เป็นพารามิเตอร์ตัวที่หนึ่งเป็นตัวบอกความสูงของเซลล์ ความสูงของเซลล์คือยังไง คือ คำสั่ง Write เนี่ยจะมองตัวเองว่าเป็นกล่องที่มีข้อความบรรจุข้างใน กล่องก็คือเซลล์ ถ้าระบุเป็น 0 คือให้ยึดความสูงของกล่องตามความสูงของข้อความ ถ้ากำหนดเป็นเลขอื่นเช่น 30 มันจะปรากฎเหมือนมีช่องว่างระหว่างบรรทัดบนกับบรรทัดล่างอยู่ระดับหนึ่ง ลองเปลี่ยนเลข 0 เล่นดูครับจะเข้าใจเอง
$pdf->Output('hello-tcpdf.pdf', 'I');
สั่งให้แสดงไฟล์ pdf ที่หน้าเบราเซอร์ ถ้าเราต้องการให้เซฟเป็นไฟล์เราจะเปลี่ยนตัวอักษร I ไปเป็น F เดี๋ยวเราค่อยว่ากันในบทเรื่อง Output
$pdf->Close();
หลังจากใช้งานไฟล์ PDF เสร็จแล้ว ให้ปิดมันเสมอ ผมเคยเจอปัญหาอยู่ครั้งหนึ่ง ผมใช้ไฟล์ PDF เสร็จแล้วแล้วผมไม่ได้เขียนคำสั่ง Close แล้วทีนี้ผมสั่งลบไฟล์ทิ้ง สั่งลบยังไงก็ลบไม่ได้ จนเมื่อผม Close มันมันก็ลบได้
เหมือนกับที่เราเปิดไฟล์บนวินโดวทิ้งไว้ แล้วตามไปลบไฟล์นั้น จะเห็นว่ามันไม่สามารถลบได้
เป็นแบบเดียวกัน
ท่านสามารถไปลองเล่นไฟล์ตัวอย่างที่เขาเขียนไว้ให้ ซึ่งจะมีคำสั่งที่ผมไม่ได้กล่าวไว้จำนวนมาก เพื่อเป็นการศึกษาเพิ่มเติม ที่นี่ https://tcpdf.org/examples/
แล้วพบกันใหม่ในบทถัดไปนะครับ
Leave a Reply