ให้เรตสมาชิก: 3 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

 

บทที่ 4 การใช้ภาษาไทยและคำสั่งสำหรับแทรกข้อความในเอกสาร

 

บทที่ 4 การใช้ภาษาไทยและคำสั่งสำหรับแทรกข้อความในเอกสาร
บทที่ 4 การใช้ภาษาไทยและคำสั่งสำหรับแทรกข้อความในเอกสาร


               จากบทที่ 3 ได้เรียนรู้เรื่องการปรับแต่งส่วนหัวและท้ายของเอกสารไปแล้ว ในบทนี้จะมาแนะนำการแทรกข้อความเนื้อหาลงในเอกสารกันบ้าง ซึ่งใน TCPDF มีคำสั่งหลายตัวที่ใช้สำหรับแทรกข้อความ เช่น Cell(), Multicell(), WriteHTML(), writeHTMLCell() โดยแต่ละตัวจะมีความสามารถแตกต่างกันออกไป นอกจากนี้ปัญหาในการใช้ Library(ไลบรารี่) สำหรับการสร้าง PDF (พีดีเอฟ) ที่นักพัฒนาไทยมักจะเจอหลายครั้ง คือ ปัญหาเรื่องการแสดงข้อความที่เป็นภาษาไทย แสดงข้อความไม่ถูกต้อง หรือบางครั้งเป็นภาษาต่างด้าว แต่ตัว TCPDF สามารถใส่ข้อความที่เป็นภาษาไทยได้

วิธีการทำให้ TCPDF รองรับข้อความที่เป็นภาษาไทย

               TCPDF Library สามารถกำหนดการใช้แบบตัวอักษรได้ ซึ่งในชุดไฟล์ที่ดาวน์โหลดมาจะมีโฟลเดอร์ที่ชื่อว่า fonts อยู่ การใช้ภาษาไทยให้สามารถแสดงผลได้อย่างถูกต้องนั้น ขึ้นอยู่กับตัวอักษรที่เลือกใช้ด้วย โดยตัวอักษรที่เป็นค่าเริ่มต้นของ TCPDF ไม่รองรับการแสดงข้อความภาษาไทย เพราะฉะนั้นเวลาสร้างเอกสารให้กำหนดตัวอักษรใหม่ที่สามารถใช้ภาษาไทยได้ ปกติจะสามารถติดตั้งตัวอักษรใหม่เข้าไปได้ แต่จะขอแนะนำวิธีการทำในบทเรียนต่อไป สำหรับบทเรียนนี้ให้เลือกใช้ตัวอักษรที่ชื่อ freeserif

 

คำสั่งสำหรับกำหนดแบบตัวอักษร

// กำหนดรูปแบบตัวอักษรให้กับส่วนหัวของเอกสาร 
// freeserif = ชื่อตัวอักษร
// B = กำหนดให้เป็นตัวหนา
// 12 = ขนาดตัวอักษร
$pdf->setHeaderFont(array('freeserif', 'B', 12));

// กำหนดรูปแบบตัวอักษรให้กับเนื้อหา
$pdf->SetFont('freeserif', '', 16); 

 

คำสั่งสำหรับแทรกข้อความในเอกสาร

  • คำสั่ง Cell()
    Cell($w, $h, $txt, $border, $ln, $align, $fill, $link, $stretch, $ignore_min_height, $calign, $valign)
    $w = กำหนดความกว้างของกล่องข้อความ
    $h = กำหนดความสูงของกล่องข้อความ
    $txt = ข้อความที่ต้องการให้แสดง
    $border = กำหนดเส้นกรอบของกล่องข้อความ
    $ln = กำหนดให้หลังจากแทรกข้อความนี้แล้วข้อความต่อไปให้แสดงต่อตำแหน่งไหน
    $align = การจัดตำแหน่งข้อความ
    $fill = กำหนดให้ใส่สีพื้นหลังของกล่องข้อความ
    $link = ใส่ URL ที่ข้อความ เช่น http://www.mindphp.com
    $stretch = ใช้การบีบและกระจายข้อความ
    $ignore_min_height = ถ้าข้อความมีความสูงเกินกว่าที่กำหนดไว้ให้ปรับความสูงให้พอดี
    $calign = กำหนดตำแหน่งของกล่องข้อความตามตำแหน่งของข้อความ
    $valign = กำหนดตำแหน่งข้อความในแนวตั้ง
  • คำสั่ง Multicell()
    MultiCell($w, $h, $txt, $border, $align, $fill, $ln, $x, $y, $reseth, $stretch, $ishtml, $autopadding, $maxh, $valign, $fitcell)
    $w = กำหนดความกว้างของกล่องข้อความ
    $h = กำหนดความสูงของกล่องข้อความ
    $txt = ข้อความที่ต้องการให้แสดง
    $border = กำหนดเส้นกรอบของกล่องข้อความ
    $align = การจัดตำแหน่งข้อความ
    $fill = กำหนดให้ใส่สีพื้นหลังของกล่องข้อความ
    $ln = กำหนดให้หลังจากแทรกข้อความนี้แล้วข้อความต่อไปให้แสดงต่อตำแหน่งไหน
    $x = กำหนดตำแหน่งของกล่องข้อความในแนวนอนตามแกน x
    $y = กำหนดตำแหน่งของกล่องข้อความในแนวตั้งตามแกน y
    $reseth = ล้างค่าความสูงของกล่องข้อความก่อนหน้านี้
    $stretch = ใช้การบีบและกระจายข้อความ
    $ishtml = กำหนดว่าข้อความใช้คำสั่ง HTML
    $autopadding = กำหนดระยะห่างระหว่างกรอบกับข้อความแบบอัตโนมัติ
    $maxh = กำหนดค่าสูงสุดของความสูง
    $valign = กำหนดตำแหน่งข้อความในแนวตั้ง
    $fitcell = ปรับขนาดข้อความให้พอดีกับกรอบ
  • คำสั่ง WriteHTML()
    writeHTML($html, $ln, $fill, $reseth, $cell, $align)
    $html = กำหนดข้อความหรือคำสั่ง HTML
    $ln = กำหนดให้หลังจากแทรกข้อความนี้แล้วข้อความต่อไปให้แสดงต่อตำแหน่งไหน
    $fill = กำหนดให้ใส่สีพื้นหลังของกล่องข้อความ
    $reseth = ล้างค่าความสูงของกล่องข้อความก่อนหน้านี้
    $cell = กำหนดข้อความให้เริ่มต้นชิดซ้าย
    $align = การจัดตำแหน่งข้อความ
  • คำสั่ง writeHTMLCell()
    writeHTMLCell($w, $h, $x, $y, $html, $border, $ln, $fill, $reseth, $align, $autopadding)
    $w = กำหนดความกว้างของกล่องข้อความ
    $h = กำหนดความสูงของกล่องข้อความ
    $x = กำหนดตำแหน่งของกล่องข้อความในแนวนอนตามแกน x
    $y = กำหนดตำแหน่งของกล่องข้อความในแนวตั้งตามแกน y
    $html = กำหนดข้อความหรือคำสั่ง HTML
    $border = กำหนดเส้นกรอบของกล่องข้อความ
    $ln = กำหนดให้หลังจากแทรกข้อความนี้แล้วข้อความต่อไปให้แสดงต่อตำแหน่งไหน
    $fill = กำหนดให้ใส่สีพื้นหลังของกล่องข้อความ
    $reseth = ล้างค่าความสูงของกล่องข้อความก่อนหน้านี้
    $align = การจัดตำแหน่งข้อความ
    $autopadding = กำหนดระยะห่างระหว่างกรอบกับข้อความแบบอัตโนมัติ


ตัวอย่างโค้ด

<?php
require_once('tcpdf.php');

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8');

$pdf->SetCreator('Mindphp');
$pdf->SetAuthor('Mindphp Developer');
$pdf->SetTitle('Mindphp Example 04');
$pdf->SetSubject('Mindphp Example');
$pdf->SetKeywords('Mindphp, TCPDF, PDF, example, guide');

// กำหนดรูปแบบตัวอักษรให้กับส่วนหัวของเอกสาร 
// freeserif = ชื่อตัวอักษร
// B = กำหนดให้เป็นตัวหนา
// 12 = ขนาดตัวอักษร
$pdf->setHeaderFont(array('freeserif', 'B', 12));

$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, 'Mindphp Example 04', 'การใช้คำสั่ง Cell(), Multicell(), WriteHTML(), writeHTMLCell()', array (0, 64, 255), array (0, 64, 128));
$pdf->setFooterData(array (0, 64, 0), array (0, 64, 128));

$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);
$pdf->AddPage();

// กำหนดรูปแบบตัวอักษรให้กับเนื้อหา
$pdf->SetFont('freeserif', '', 16);

// การใช้คำสั่ง Cell()
$pdf->Cell(40, 30, 'Cell: ซ้าย', 1, 0, 'L', false, 'http://www.mindphp.com');
$pdf->Cell(40, 30, 'Cell: กลาง', 1, 0, 'C', false, 'http://www.mindphp.com');
$pdf->Cell(40, 30, 'Cell: ขวา', 1, 0, 'R', false, 'http://www.mindphp.com');

// การใช้คำสั่ง MultiCell()
$pdf->MultiCell(50, 30, 'MultiCell: ซ้าย', 1, 'L', false, 0, '', 60);
$pdf->MultiCell(50, 30, 'MultiCell: กลาง', 1, 'C', false, 0, 80, 60);
$pdf->MultiCell(50, 30, 'MultiCell: ขวา', 1, 'R', false, 1, 145, 60);

$html = '<h3>หัวข้อ writeHTML()</h3>';
$html .= '<table border="1" width="720" cellpadding="10"><tr>';
$html .= '<td width="150"><img src="http://www.mindphp.com/images/info/mindphp.png" width="150" /></td>';
$html .= '<td>';
$html .= '<b>PHP ยินดีต้อนรับสู่ MIND PHP.COM</b>';
$html .= '<p style="font-size: 12px;">PHP ยินดีต้อนรับสู่ MIND PHP.COM (รูปแบบใหม่)   ปรับปรุง Mindphp เป็นรูปแบบใหม่ ได้ใช้ ตัว Convert จาก phpnuke เป็น Joomla 1.5 และได้อัพเดดอย่างต่อเนื่องเป็น Joomla 2.5 ปัจจุบัน ใช้ Joomla 3.6 </p>';
$html .= '</td>';
$html .= '</tr></table>';
// การใช้คำสั่ง writeHTML()
$pdf->writeHTML($html);

// การใช้คำสั่ง writeHTMLCell()
$pdf->writeHTMLCell(50, '', '', 150, 'writeHTMLCell()<br /><img src="http://www.mindphp.com/images/info/mindphp.png" width="150" />', 1);
$pdf->writeHTMLCell(50, '', 145, 150, 'writeHTMLCell()<br /><img src="http://www.mindphp.com/images/info/mindphp.png" width="150" />', 1);
$pdf->writeHTMLCell(50, '', 80, 200, 'writeHTMLCell()<br /><img src="http://www.mindphp.com/images/info/mindphp.png" width="150" />', 1);

$pdf->Output('mindphp04.pdf', 'I'); 



การแสดงผล

การแสดงผล
การแสดงผล

หัวเรื่อง
บทที่ 4 การใช้ภาษาไทยและคำสั่งสำหรับแทรกข้อความในเอกสาร
หมวดหมู่
สร้างไฟล์ PDF ด้วยภาษา PHP, สร้างไฟล์ PDF ด้วยภาษา PHP
ฮิต
6762
ผู้สร้างเอกสาร
ae
วันที่สร้างเอกสาร
2017-12-13 16:09:29
รายละเอียด

สำหรับบทที่ 4 ในบทนี้จะมาแนะนำการแทรกข้อความเนื้อหาลงในเอกสารกันบ้าง ซึ่งใน TCPDF มีคำสั่งหลายตัวที่ใช้สำหรับแทรกข้อความ 

> อ่านต่อ ...

mindphp04.zip

ประเภทไฟล์ zip

ขนาดไฟล์ 1.27 KB

ผู้อัพโหลดไฟล์ ae

วันที่อัพโหลด 2017-12-13 08:45:56


 

สามารถศึกษาการสร้างไฟล์ PDF ด้วยภาษา PHP บทอื่นๆได้ที่ : บทเรียนการสร้างไฟล์ PDF ด้วย PHP

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
งานประจำวันที่ 2 มิถุนายน 2563
โดย natthanit.r2538 อ 02 มิ.ย. 2020 10:11 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
4
31
อ 02 มิ.ย. 2020 7:42 pm โดย natthanit.r2538
มารู้จักจังหวัดสงขลา เมืองสองทะเลกันค่ะ
โดย natthanit.r2538 อ 02 มิ.ย. 2020 4:27 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
7
อ 02 มิ.ย. 2020 4:27 pm โดย natthanit.r2538
ระบบบัญชีคืออะไร มีความสำคัญอย่างไร และจะทำอย่างไรหากต้องการวางระบบบัญชี
โดย natthanit.r2538 อ 02 มิ.ย. 2020 2:13 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
4
อ 02 มิ.ย. 2020 2:13 pm โดย natthanit.r2538
เปิดบริษัทต้องจดทะเบียนภาษีมูลค่าเพิ่มหรือไม่ ภาษีมูลค่าเพิ่มคืออะไร ??
โดย natthanit.r2538 อ 02 มิ.ย. 2020 12:16 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
7
อ 02 มิ.ย. 2020 12:16 pm โดย natthanit.r2538
ภ.ง.ด. 1,3,53 คืออะไร
โดย natthanit.r2538 อ 02 มิ.ย. 2020 11:08 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
7
อ 02 มิ.ย. 2020 11:08 am โดย natthanit.r2538
สรุปการประชุมลูกค้าครั้งแรก
โดย natthanit.r2538 จ 01 มิ.ย. 2020 6:46 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
2
จ 01 มิ.ย. 2020 6:46 pm โดย natthanit.r2538
สวนครัวริมระเบียง
โดย natthanit.r2538 จ 01 มิ.ย. 2020 4:42 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
10
จ 01 มิ.ย. 2020 4:42 pm โดย natthanit.r2538
วิธีการเดินทางจาก สงขลา มา กรุงเทพฯ
โดย natthanit.r2538 จ 01 มิ.ย. 2020 1:47 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
17
จ 01 มิ.ย. 2020 1:47 pm โดย natthanit.r2538
งานประจำวันที่ 1 มิถุนายน 2563
โดย natthanit.r2538 จ 01 มิ.ย. 2020 10:53 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
2
32
อ 02 มิ.ย. 2020 10:00 am โดย natthanit.r2538
note
โดย natthanit.r2538 จ 01 มิ.ย. 2020 10:52 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
6
จ 01 มิ.ย. 2020 10:52 am โดย natthanit.r2538
Work's on Hand ณัฐนิตย์ ร่มบ้านโหล๊ะ M103
โดย natthanit.r2538 จ 01 มิ.ย. 2020 10:49 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
4
จ 01 มิ.ย. 2020 10:49 am โดย natthanit.r2538
list ความรู้ที่มี ว่าเคยเรียน หรือ เคยทำอะไรมาบ้าง
โดย natthanit.r2538 จ 01 มิ.ย. 2020 10:48 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
2
23
จ 01 มิ.ย. 2020 11:08 am โดย natthanit.r2538
B - เข้าเมนูหน้ารวมรายการใน admin ไม่ได้
โดย thatsawan ศ 29 พฤษภาคม 2020 5:58 pm บอร์ด Odoojob.com - Tester
0
1
ศ 29 พฤษภาคม 2020 5:58 pm โดย thatsawan
B - ยังขาดหน้าผลการค้นหา จาก search.php
โดย mindphp ศ 29 พฤษภาคม 2020 6:11 am บอร์ด FDD (Main)
0
1
ศ 29 พฤษภาคม 2020 6:11 am โดย mindphp
B - กล่องค้นหาจากหน้า index ใช้งานไม่ได้ กดแล้วไม่ไปหน้าค้นหา
โดย mindphp ศ 29 พฤษภาคม 2020 5:39 am บอร์ด FDD (Main)
1
1
ศ 29 พฤษภาคม 2020 5:53 am โดย mindphp
B - ไม่ใช่แค่โชว์ icon facebook มันต้องทำลิงค์เพื่อให้คลิกไป
โดย mindphp ศ 29 พฤษภาคม 2020 4:39 am บอร์ด FDD (Main)
1
2
ศ 29 พฤษภาคม 2020 4:51 am โดย mindphp
อัพเดท phpbb 3.3 เเล้ว extenstion ใช้งานไม่ได้
โดย thatsawan พฤ 28 พฤษภาคม 2020 10:08 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
125
พฤ 28 พฤษภาคม 2020 10:10 pm โดย thatsawan
วิธีการสร้าง css ที่ใช้งานเฉพาะในบราวเซอร์ safari เท่านั้น
โดย Ittichai_chupol พฤ 28 พฤษภาคม 2020 6:06 pm บอร์ด CSS Knowledge
0
121
พฤ 28 พฤษภาคม 2020 6:06 pm โดย Ittichai_chupol
R - Set Demo เป็น subdomain ของ ตัวนี้
โดย mindphp พฤ 28 พฤษภาคม 2020 6:17 am บอร์ด มารียา ซีฟู้ดส์ - Developer
0
9
พฤ 28 พฤษภาคม 2020 6:17 am โดย mindphp
อยากทราบวิธีการกำหนด ค่า css ให้กับ button โดยกำหนดเฉพาะแต่ละบราวเซอร์
โดย Ittichai_chupol พ 27 พฤษภาคม 2020 8:39 pm บอร์ด HTML CSS
1
52
พ 27 พฤษภาคม 2020 9:15 pm โดย mindphp