ในบทนี้เราจะมาติดตั้ง TCPDF แล้วก็ลองสร้างไฟล์ PDF ที่มีคำว่า hello tcpdf อยู่ข้างในกัน สภาพแวดล้อมของเครื่องผม

  1. ผมใช้วินโดว
  2. ผมติดตั้ง xampp เป็นตัวจำลองเครื่องให้สามารถเขียน PHP ได้
  3. ผมติดตั้ง composer ผมจะติดตั้งตัว TCPDF ผ่าน composer
  4. โฟลเดอร์โปรเจ็กสำหรับทำการทดสอบเขียนโค้ดครั้งนี้อยู่ที่ 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/

แล้วพบกันใหม่ในบทถัดไปนะครับ