เนื้อหาเกี่ยวกับ การสร้าง report เป้น ไฟล์ pdf ด้วย tcpdf นี้
เดิมมีบทความเก่าอยู่แล้ว
ประยุกต์สร้าง pdf ไฟล์ จาก tcpdf class ด้วย php รองรับภาษาไทย
https://www.ninenik.com/content.php?arti_id=226 via @ninenik
แต่คิดว่า ควรปรับมาใช้ เวอร์ชั่นที่ใหม่ และปัจจุบัน น่าจะดีกว่า
สามารรถดาวน์โหลดไฟล์ ตัวอย่างเบื้องต้น และไฟล์ที่เกี่ยวข้องได้ที่
ฟอนท์ ภาษาไทยสำหรับ tcpdf
(ถ้าใครโหลดไฟล์ จากด้านบนแล้ว จะมี font ภาษาไทยอยู่ด้วย ไม่ต้องไปดาวน์โหลดใหม่)
โดยชื่อที่เราจะเอาไปใช้และรองรับภาษาไทยมี
angsanaupc
cordiaupc
thsarabun
โดยชื่อที่เราจะเอาไปใช้และรองรับภาษาไทยมี
angsanaupc
cordiaupc
thsarabun
หรือถ้าใครอยากสร้าง font เฉพาะ ลองสร้างด้วยวิธีตามนี้ดู
หลังจากโหลดไฟล์แล้ว จะมีรูปแบบไฟล์ตัวอย่างประกอบ
หรือสามารถทำตามได้ดังนี้
1. ไฟล์ข้อมูลที่เราต้องการแสดงเป็นตาราง data_html.php ในตัวอย่าง
จะเป็นการไปดังข้อมูลจังหวัดมาแสดง
<?php session_start(); header("Content-type:text/html; charset=UTF-8"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); include("dbconnect.php"); ?> <style> td{ border:1px dashed #CCC; } </style> <table cellspacing="0" cellpadding="1" border="0" style="width:1100px;"> <tr> <td width="50" align="center" bgcolor="#F2F2F2">#</td> <td bgcolor="#F2F2F2"> Topic</td> </tr> <?php $i=1; $sql="SELECT * FROM province_th WHERE 1 LIMIT 50 "; $result = $mysqli->query($sql); if($result && $result->num_rows>0){ while($row = $result->fetch_assoc()){ ?> <tr> <td align="center"><?=$i?></td> <td > <?=$row['province_name']?></td> </tr> <?php $i++; }} ?> </table>
2. ไฟล์สำหรับติดต่อกับฐานข้อมูล dbconnect.php
<?php $mysqli = new mysqli("localhost", "root","","test"); /* check connection */ if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } if(!$mysqli->set_charset("utf8")) { printf("Error loading character set utf8: %s\n", $mysqli->error); exit(); }
3. ไฟล์สร้าง pdf ในที่นี้ใช้ชื่อ test_list_table.php
<?php // Include the main TCPDF library (search for installation path). require_once('tcpdf/tcpdf.php'); include("tcpdf/class/class_curl.php"); // การตั้งค่าข้อความ ที่เกี่ยวข้องให้ดูในไฟล์ // tcpdf / config / tcpdf_config.php // เริ่มสร้างไฟล์ pdf $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // กำหนดรายละเอียดของไฟล์ pdf $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('ninenik'); $pdf->SetTitle('TCPDF table report'); $pdf->SetSubject('TCPDF ทดสอบ'); $pdf->SetKeywords('TCPDF, PDF, ทดสอบ,ninenik, guide'); // กำหนดข้อความส่วนแสดง header $pdf->SetHeaderData( PDF_HEADER_LOGO, // โลโก้ กำหนดค่าในไฟล์ tcpdf_config.php PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, // กำหนดเพิ่มเติมในไฟล์ tcpdf_config.php array(0,0,0), // กำหนดสีของข้อความใน header rgb array(0,0,0) // กำหนดสีของเส้นคั่นใน header rgb ); $pdf->setFooterData( array(0,64,0), // กำหนดสีของข้อความใน footer rgb array(220,44,44) // กำหนดสีของเส้นคั่นใน footer rgb ); // กำหนดฟอนท์ของ header และ footer กำหนดเพิ่มเติมในไฟล์ tcpdf_config.php $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); // ำหนดฟอนท์ของ monospaced กำหนดเพิ่มเติมในไฟล์ tcpdf_config.php $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); // กำหนดขอบเขตความห่างจากขอบ กำหนดเพิ่มเติมในไฟล์ tcpdf_config.php $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); // กำหนดแบ่่งหน้าอัตโนมัติ $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); // กำหนดสัดส่วนของรูปภาพ กำหนดเพิ่มเติมในไฟล์ tcpdf_config.php $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); // อนุญาตให้สามารถกำหนดรุปแบบ ฟอนท์ย่อยเพิมเติมในหน้าใช้งานได้ $pdf->setFontSubsetting(true); // กำหนด ฟอนท์ $pdf->SetFont('thsarabun', '', 14, '', true); // เพิ่มหน้า $pdf->AddPage(); $path_info = pathinfo($_SERVER['REQUEST_URI']); $http = ($_SERVER['REQUEST_SCHEME'])?$_SERVER['REQUEST_SCHEME']."://":"http://"; $host = $_SERVER['SERVER_NAME']; $pathDir = $path_info['dirname']."/"; $url = $http.$host.$pathDir; // เรียกใช้งาน ฟังก์ชั่นดึงข้อมูลไฟล์มาใช้งาน $html = curl_get($url."data_html.php"); // path ไฟล์ // ถ้าทดสอบบน server ใช้เป็น http://www.example.com/data_html.php // ภ้าทดสอบที่เครื่องก็ใช้ http://localhost/data_html.php // สร้าง pdf ด้วยคำสั่ง writeHTMLCell() $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); // แสดงไฟล์ pdf $pdf->Output('table_report.pdf', 'I'); ?>
โค้ดและตัวอย่างข้างต้น เป็นการนำเสนอวิธีการดึงข้อมูลจากฐานข้อมูลมาแสดงในรูปแบบ
report ตาราง จากนั้น สร้างไฟล์ pdf จากข้อมูลตารางนั้นๆ
ตัวอย่างไฟล์ที่สร้าง https://www.ninenik.com/demo/tcpdf/table_report.pdf