|
ภาษาไทยบน PHPWord วิธีการแก้ปัญหา ภาษาไทย (Thai) บน Library ของ PHPWord |
ภาษาไทยบน PHPWord บทความและวิธีการแก้ปัญหาภาษาไทย (Thai) บน Library ของ PHPWord บทความนี้ได้เกิดอันเนื่องจากกระทู้ของสมาขิกท่านหนึ่งที่มีปัญหาการแสดงผลภาษาไทยบน PHPWord ซึ่งพายามหาวิธีแก้ไขหลายวิธี ทั้งใช้ iconv() ก็ยังไม่สามารถแก้ปัญหาได้ และผ่านไปหลายวันสมาชิกท่านนั้นก็พบว่าปัญหาเกิดจากใน method หลาย ๆ ตัวของ PHPWord มีการแปลงค่า String ที่ส่งไปให้อยู่ในรูปแบบของ utf8_encode() และลองทำการ remove ฟังก์ชั่นนี้ออก ปรากฏว่าสามารถแสดงภาษาไทยได้อย่างถูกต้อง
Screenshot
ตัวอย่าง method
public function addText($text, $styleFont = null, $styleParagraph = null) {
$givenText = utf8_encode($text);
$text = new PHPWord_Section_Text($givenText, $styleFont, $styleParagraph);
$this->_elementCollection[] = $text;
return $text;
}
แก้ไขใหม่เป็น
public function addText($text, $styleFont = null, $styleParagraph = null) {
$givenText = $text;
$text = new PHPWord_Section_Text($givenText, $styleFont, $styleParagraph);
$this->_elementCollection[] = $text;
return $text;
}
โดยทำการ remove ตัว function หรือ method ที่มีการเข้ารหัสแบบ utf8_encode ทั้งหมด ซึ่งใน Library นี้มีอยู่หลาย function มาก แต่ถ้าหากต้องการตัวที่แก้ไขทั้งมดแล้ว สามารถดาวน์โหลดได้จากส่วนท้ายของบทความ
Sample
<?php
require_once 'PHPWord.php';
// New Word Document
$PHPWord = new PHPWord();
// New portrait section
$section = $PHPWord->createSection();
// Add text elements
$section->addText("วันนี้ วันที่ 31 พฤษภาคม 2555");
$section->addTextBreak(2);
$section->addText("สวัสดีครับ! ชาวไทยครีเอท", array('name'=>'Angsana New', 'color'=>'006699', 'size'=>'24'));
$section->addTextBreak(2);
$PHPWord->addFontStyle('rStyle', array('bold'=>true, 'italic'=>true, 'size'=>16));
$PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100));
$section->addText('I am styled by two style definitions.', 'rStyle', 'pStyle');
$section->addText('I have only a paragraph style definition.', null, 'pStyle');
// Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('CreateWord1.docx');
?>
ในการบันทึกไฟล์จะต้องบันทึกในรูปแบบ UTF-8 เหมือนในรุปตัวอย่าง
Screenshot
PHPWord สามารถแสดงภาษาไทยได้อย่างถูกต้อง
PHPWord สามารถแสดงภาษาไทยได้อย่างถูกต้อง
ดาวน์โหลดไฟล์ที่ได้ทำการแก้ไขแล้ว
Download!!
เพิ่มเติม
สำหรับวิธีนี้ไม่แน่ใจว่าเป็นการแก้ไขแล้ว PHPWord จะมีผลกระทบต่อส่วนอื่น ๆ หรือไม่ จึงไม่กล้ารับประกันกว่าจะสามารถทำงานถูกต้องและไม่มีปัญหา ถ้าต้องการ Version ที่สมบูรณ์ อาจจะต้องทำการรายงานไปยังผู้พัฒนา หรือรอ Version ที่ได้รับการแก้ไขปัญหานี้แล้ว แต่จากที่ได้ทำการทดสอบดู สามารถแสดงผลภาษาไทยได้เป็นอย่างดี
บทความอื่น ๆ ที่เกี่ยวข้อง
Go to : PHPWord Library สร้างไฟล์ Word Document ด้วย PHP (Word 2003 , Word 2007)
Go to : PHPWord ภาษาไทย มีปัญหาเรื่องการแสดงภาษาไทย ใครเจออย่างผมบ้าง
Go to : แก้ปัญหา PHPWord แสดงตัวอักษรภาษาไทยไม่ได้ ยังไงดีครับ ใครมีวิธีแก้ช่วยแนะนำหน่อยครับ คือลองใช้ iconv() แล้วแต่มันไม่ได้ครับ
|
|
|
By : |
TC Admin
|
|
Article : |
บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ |
|
Score Rating : |
|
|
Create Date : |
2012-05-31 |
|
Download : |
No files |
|
Sponsored Links |
|
|
|
|