PHP mPDF export databbase to pdf จากฐานข้อมูล ภาษาไทย

Spread the love

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

ส่งออกฐานข้อมูล Database 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 ขึ้นมา เช่น 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 ดูเพลินก็หวังว่าบทความของเราจะเป็นประโยชน์ต่อท่านไม่มากก็น้อย นอกจากนี้ เรายังมีบทความดี ๆ อีกมากมาย คุณสามารถลองคลิกเขาไปอ่านบทความอื่น ๆ ตามลิงค์ด้านล่างได้เลย

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

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