PHP export html to pdf mPDF รองรับภาษาไทย

Spread the love

ใครที่กำลังทำ Web Application และอยากที่จะทำหน้า Print out และการส่งออกเอกสารที่เป็นภาษาไทยให้ออกเป็นรูปแบบของไฟล์ PDF  อยู่แล้วละก็ วันนี้ทางดูเพลินจะขอแนะนำ Library ที่มีชื่อว่า mPDF ซึ่งเป็น Library ที่ใช้งานได้ง่าย แถมยังรองรับภาษาไทยอีกด้วย เรามีตัวอย่างโค้ด และ วิธีการใช้งานมาให้เพื่อน ๆ ดูกันที่นี่เลยจ้า

ส่งออกข้อมูล Export to PDF ด้วย mPDF

ติดตั้ง Composer

ก่อนอื่นเลยคุณจำเป็นต้องติดตั้ง Composer ภายในเครื่องกันเสียก่อน วิธีการติดตั้งก็ตามด้านล่างนี้เลย

  1. บน Windows เข้าไปที่เว็บไซต์ https://getcomposer.org/download/ จากนั้นให้คลิกที่ Composer-Setup.exe เพื่อดาวน์โหลดไฟล์มาติดตั้ง
  2. บน MacOS คลิกที่นี่ เพิ่ม Download
  3. บน Server เข้าไปที่เว็บไซต์ https://getcomposer.org/doc/00-intro.md จากนั้นทำตามขั้นตอนที่แนะนำในหน้าเว็บกันได้เลย

โหลดฟอนต์ภาษาไทย

จากนั้นคุณต้องมีฟอนต์ภาษาไทยสำหรับออกหน้ารายงานกันก่อน หากว่าคุณยังไม่มี คลิกที่นี่ เพิ่ม Download Font ภาษาไทย เตรียมไว้ก่อน

เมื่อเตรียมการตามด้านบนเสร็จแล้วคราวนี้เรามาเริ่มติดตั้ง mPDF Library และเตรียมความพร้อมก่อนเริ่มเขียนโค้ดส่งออกไฟล์ PDF กันเลย

  1. ไปยัง Folder Project ที่เราต้องการติดตั้ง mPDF Library จากนั้นเปิด Terminal ขึ้นมาแล้วพิมพ์คำสั่ง
    composer require mpdf/mpdf
  2. เมื่อติดตั้งเสร็จก็จะมีไฟล์ปรากฏขึ้นประมาณนี้
  3. สร้าง Folder Fonts ขึ้นมาใหม่ และเพิ่มฟอนต์ภาษาไทยที่เราต้องการใช้สำหรับส่งออกหน้า PDF ภาษาไทย ไว้ในนี้
  4. จากนั้นสร้างไฟล์ .php ขึ้นมา เช่น html_to_pdf_th.php หรือ คลิกที่นี่ เพื่อ Download ไฟล์ตัวอย่างไปติดตั้งและทดลองใช้งานกันได้เลย
    <?php
    session_start();
    ini_set('memory_limit', '-1');
    set_time_limit(600000);
    //โหลด 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 + [ // lowercase letters only in font key
                'th_sarabun' => [
                    '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>
                <tr>
                    <th>1.</th>
                    <td><img src="images/person.png" width="50" /></td>
                    <td>หนูทดสอบ ระบบ</td>
                    <td>เทสเตอร์</td>
                </tr>
                <tr>
                    <th>2.</th>
                    <td><img src="images/person.png" width="50" /></td>
                    <td>น้องลองเล่น ระบบ</td>
                    <td>เทสเตอร์</td>
                </tr>
            </tbody>
        </table>
    <?php return ob_get_clean();
    }
    $mpdf->WriteHTML($export);
    $mpdf->Output();

บทความอื่น ๆ ที่เกี่ยวข้องกับ PHP

เป็นยังไงกันบ้างคะ สำหรับบทความเรื่อง ส่งออกข้อมูล export html to pdf ภาษาไทย ด้วย mPDF Library ดูเพลินก็หวังว่าบทความของเราจะเป็นประโยชน์ต่อท่านไม่มากก็น้อย นอกจากนี้ เรายังมีบทความดี ๆ อีกมากมาย คุณสามารถลองคลิกเขาไปอ่านบทความอื่น ๆ ตามลิงค์ด้านล่างได้เลย

เทคนิคอื่นๆ เกี่ยวกับการเขียนโค้ด คลิก

อย่าลืมไปติดตาม Facebook fanpage ของเรา >> Click <<