วิธีสร้าง PDF ใน PHP โดยใช้ไลบรารี mPDF

5 พฤษภาคม 2566
วิธีสร้าง PDF ใน PHP โดยใช้ไลบรารี mPDF

PDF เป็นคำย่อของ Portable Document Format ซึ่งรวบรวมองค์ประกอบทั้งหมดในไฟล์ และช่วยให้ผู้ใช้สามารถนำเสนอเอกสารได้อย่างง่ายดาย PHP มีไลบรารีที่ดีเยี่ยมที่สามารถแปลงโค๊ด HTML หรือวีธีการอื่นๆ ให้เป็นเอกสาร PDF ได้ ลองนึกภาพว่าหากคุณได้รับมอบหมายให้ทำการสร้าง PDF ในเว็บแอปพลิเคชันที่ใช้ PHP ของคุณ การรู้วิธีใช้ PHP เพื่อสร้างเอกสาร PDF จะมีประโยชน์มาก ในบทความนี้ ฉันจะสาธิตวิธีสร้างไฟล์ PDF ใน PHP ด้วยไลบรารีอย่าง mPDF เป็นไลบรารีที่สร้างไฟล์ PDF จาก HTML ที่เข้ารหัส UTF-8

เริ่มที่การติดตั้ง mPDF

ในการเริ่มต้น เราต้องติดตั้ง mPDF ในโครงการของเรา เปิดโครงการของคุณในเทอร์มินัลหรือ CMD และเรียกใช้การเรียก Composer ต่อไปนี้

composer require mpdf/mpdf

การสร้างไฟล์ PDF อย่างง่าย

<?php
// โหลด mPDF อัตโนมัติ
require_once __DIR__ . '/vendor/autoload.php';
// สรา้งคลาส $mpdf = new \Mpdf\Mpdf(); // เขียนโค้ด HTML $mpdf->WriteHTML('<h1>Hello World</h1>'); // ส่งออกไฟล์ PDF ไปยังเบราว์เซอร์โดยตรง $mpdf->Output();

ตอนนี้ เพียงเรียกดูเว็บไซต์ของคุณ เห็น PDF ที่มีคำว่า Hello World อยู่ ก็ถือว่าสามารถสร้างไฟล์ PDF ได้แล้ว คุณสามารถนำเข้าไฟล์ HTML ของคุณที่มี CSS มีรูปภาพด้วยเข้าไปใน WriteHTML() ก็ทำได้ โดยไม่จำเป็นต้องเขียนโค๊ด HTML รวมกับ โค๊ด PHP ก็ได้ คุณสามารถเรียนรู้เพิ่มเติมได้ที่ เอกสาร mPDF

การเปลี่ยน Font ภาษาไทยใน mPDF

mPDF รองรับฟอนต์ Truetype อ่านและฝังโดยตรงจากไฟล์ฟอนต์ .ttf ฟอนต์ต้องเป็นไปตามข้อกำหนด Truetype และใช้การแมป Unicode กับอักขระ รองรับคอลเลกชัน Truetype (ไฟล์ .ttc) และไฟล์ Opentype (.otf) ในรูปแบบ Truetype ไปดูตัวอย่างการเปลี่ยน Font กันเลย

// โหลด mPDF อัตโนมัติ
require_once __DIR__ . '/vendor/autoload.php';
// สรา้งคลาส $mpdf = new \Mpdf\Mpdf(); $defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults(); $fontDirs = $defaultConfig['fontDir']; $defaultFontConfig = (new \Mpdf\Config\FontVariables())->getDefaults(); $fontData = $defaultFontConfig['fontdata']; $mpdf = new \Mpdf\Mpdf([ 'fontDir' => array_merge($fontDirs, [ __DIR__ . '/ttfonts', ]), 'fontdata' => $fontData + [ 'th-sarabun' => [ 'R' => 'THSarabun.ttf', 'I' => 'THSarabun-Italic.ttf', 'B' => 'THSarabun-Bold.ttf', 'BI' => 'THSarabun-Bold-Italic.ttf', ] ], 'default_font' => 'th-sarabun', 'default_font_size' => 16, ]);

การส่งออกไฟล์ PDF

1. ส่งไฟล์แบบอินไลน์ไปยังเบราว์เซอร์
$mpdf->Output();
2. ส่งไปยังเบราว์เซอร์และบังคับให้ดาวน์โหลดไฟล์ด้วยชื่อที่กำหนด
$mpdf->Output('filename.pdf', \Mpdf\Output\Destination::DOWNLOAD);
3. บันทึกลงในไฟล์ในเครื่อง
$mpdf->Output('filename.pdf', \Mpdf\Output\Destination::FILE);
4. ส่งคืนเอกสารเป็นสตริง เพื่อนำไปใช้ในกรณีอื่นๆ
$pdf_str = $mpdf->Output('', \Mpdf\Output\Destination::STRING_RETURN);

สรุป

ตอนนี้คุณควรจะสามารถสร้าง PDF ได้สำเร็จโดยใช้ PHP แล้ว ยิ่งมีเนื้อหาใน PDF มากเท่าใดก็ยิ่งใช้เวลาในการโหลดนานขึ้นเท่านั้น แต่ไลบรารีขนาดเล็กนี้เป็นแหล่งข้อมูลขนาดใหญ่เมื่อคุณต้องการสร้าง PDF แบบไดนามิก คุณจะสามารถต่อยอดการสร้าง PDF ในแบบที่คุณต้องการได้อย่างแน่นอน