ใครที่กำลังทำ Web Application และอยากจะดึงข้อมูลจากฐานข้อมูลและส่งออกมาเป็นไฟล์ PDF และสามารถรองรับภาษาไทยด้วยอยู่แล้วละก็ วันนี้ทางดูเพลินจะขอแนะนำ Library ที่มีชื่อว่า mPDF ซึ่งเป็น Library ที่ใช้งานได้ง่าย แถมยังรองรับภาษาไทย แถมใช้งานร่วมกับ Database ง่ายสุด ๆ อีกด้วย เรามีตัวอย่างโค้ด และ วิธีการใช้งานมาให้เพื่อน ๆ ดูกันที่นี่เลยจ้า
ส่งออกฐานข้อมูล Database to PDF ด้วย mPDF
ติดตั้ง Composer
ก่อนอื่นเลยคุณจำเป็นต้องติดตั้ง Composer ภายในเครื่องกันเสียก่อน วิธีการติดตั้งก็ตามด้านล่างนี้เลย
- บน Windows เข้าไปที่เว็บไซต์ https://getcomposer.org/download/ จากนั้นให้คลิกที่ Composer-Setup.exe เพื่อดาวน์โหลดไฟล์มาติดตั้ง
- บน MacOS คลิกที่นี่ เพิ่ม Download
- บน Server เข้าไปที่เว็บไซต์ https://getcomposer.org/doc/00-intro.md จากนั้นทำตามขั้นตอนที่แนะนำในหน้าเว็บกันได้เลย
โหลดฟอนต์ภาษาไทย
จากนั้นคุณต้องมีฟอนต์ภาษาไทยสำหรับออกหน้ารายงานกันก่อน หากว่าคุณยังไม่มี คลิกที่นี่ เพิ่ม Download Font ภาษาไทย เตรียมไว้ก่อน
เมื่อเตรียมการตามด้านบนเสร็จแล้วคราวนี้เรามาเริ่มติดตั้ง mPDF Library และเตรียมความพร้อมก่อนเริ่มเขียนโค้ดส่งออกไฟล์ PDF กันเลย
- ไปยัง Folder Project ที่เราต้องการติดตั้ง mPDF Library จากนั้นเปิด Terminal ขึ้นมาแล้วพิมพ์คำสั่ง
composer require mpdf/mpdf
- เมื่อติดตั้งเสร็จก็จะมีไฟล์ปรากฏขึ้นประมาณนี้
- สร้าง Folder Fonts ขึ้นมาใหม่ และเพิ่มฟอนต์ภาษาไทยที่เราต้องการใช้สำหรับส่งออกหน้า PDF ภาษาไทย ไว้ในนี้
- จากนั้นสร้างไฟล์ .php ขึ้นมา เช่น database_to_pdf_th.php หรือ คลิกที่นี่ เพื่อ Download ไฟล์ตัวอย่างไปติดตั้งและทดลองใช้งานกันได้เลย
<?php session_start(); ini_set('memory_limit', '-1'); set_time_limit(600000); // Connect to MySQL database $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "database"; $conn = mysqli_connect($servername, $username, $password, $dbname); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } // Query the database $sql = "SELECT id, name, image_url, job_position FROM users"; $result = mysqli_query($conn, $sql); //โหลด vendor require_once __DIR__ . '/vendor/autoload.php'; //กำหนด Font สำหรับส่งออกภาษาไทย $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__ . '/fonts', ]), 'fontdata' => $fontData + [ 'th_sarabun' => [ // ชื่อ Font ต้องเป็น lowercase letters เท่านั้น 'R' => 'THSarabunNew.ttf', 'I' => 'THSarabunNew-Italic.ttf', ] ], 'default_font' => 'th_sarabun' ]); //กำหนด Page Margin $mpdf->AddPageByArray([ 'margin-left' => 5, 'margin-right' => 5, 'margin-top' => 5, 'margin-bottom' => 5, ]); $export = html_content(); function html_content() { ob_start();?> <style> table{ border-collapse: collapse; width: 100%; } table th,table td{ border: 1px solid #CCC; padding: 3px; } </style> <h2>ส่งออกหน้ารายงาน</h2> <table> <thead> <tr> <th>ลำดับ</th> <th>รูป</th> <th>ชื่อ</th> <th>ตำแหน่ง</th> </tr> </thead> <tbody> <?php $cnt = 2; while ($row_data = mysqli_fetch_array($result)): ?> <tr> <th><?=$cnt?>.</th> <td><img src="<?=$row_data['image_url']?>" width="50" /></td> <td><?=$row_data['name']?></td> <td><?=$row_data['job_position']?></td> </tr> <?php $cnt++; endwhile; ?> </tbody> </table> <?php return ob_get_clean(); } $mpdf->WriteHTML($export); $mpdf->Output();
บทความอื่น ๆ ที่เกี่ยวข้องกับ PHP
เป็นยังไงกันบ้างคะ สำหรับบทความเรื่อง ส่งออกข้อมูล export databbase to pdf ภาษาไทย ด้วย mPDF Library ดูเพลินก็หวังว่าบทความของเราจะเป็นประโยชน์ต่อท่านไม่มากก็น้อย นอกจากนี้ เรายังมีบทความดี ๆ อีกมากมาย คุณสามารถลองคลิกเขาไปอ่านบทความอื่น ๆ ตามลิงค์ด้านล่างได้เลย