วิธีเพิ่มฟ้อนต์ภาษาไทยเข้าไปใน TCPDF บน Laravel 6

Satoshi Dev
VisionDev
Published in
4 min readFeb 19, 2020

--

How to add Thai fonts to TCPDF on Laravel 6.

หากคุณใช้ TCPDF อยู่ เวลาจะทำ Export ไฟล์ออกเป็น PDF ให้มีภาษาไทยที่อ่านง่าย แสดงผลที่สวยงาม นอกจากนั้นคุณยังสามารถเพิ่มฟ้อนต์ต่างๆตามที่ต้องการได้ในที่นี้ใช้ยกตัวอย่างโดยการนำฟ้อนต์ไทยยอดนิยมอย่าง ThaisarabunNew มาใช้งานใน project เราครับ

ก่อนอื่นเลยหากท่านติดตั้ง Laravel ไว้บนเครื่องของคุณแล้ว ก็ให้ข้ามขั้นตอนนี้ไปก่อน แต่หากยังไม่ติดตั้งก็ให้ติดตั้งก่อนนะครับผม

ก็ใช้คำสั่ง ด้านล่างนี้สำหรับการติดตั้ง Laravel อย่าลืมนะครับก่อนติดตั้ง ในเครื่องของเราก็ต้องมี composer ด้วยนะครับ (เผื่อมือใหม่ยังไม่รู้ เดียวงง !!)

การติดตั้ง laravel ถ้าเป็นมือใหม่ให้ดูตามวีดีโอนี้เลยนะครับผม

ให้คุณเปิด terminal หรือ commandline แล้ว cd เข้าไปในที่เก็บ project ของคุณแล้วใช้คำสั่งนี้ในการติดตั้ง

composer create-project --prefer-dist laravel/laravel tcpdf-laravel
install laravel 6

พอติดตั้งเสร็จแล้วก็ให้ CD เข้าไปยัง Folder project ของเรา ตามนี้

cd tcpdf-laravel

จากนั้นก็ให้ติดตั้ง package tcpdf-laravel สำหรับใช้งาน tcpdf ซึ่งผมใช้ของ elibyy นะครับ ตามลิงค์นี้

ผมจะใช้คำสั่ง นี้ในการติดตั้งนะครับ

composer require elibyy/tcpdf-laravel

หากไม่มีปัญหาอะไรก็จะขึ้นตามภาพด้านบน แสดงว่าการติดตั้งสำเร็จ พร้อมใช้งานแล้วครับ ทีนี้ ก็ใช้คำสั่ง

php artisan serve 

เพื่อดูว่าเราติดตั้งเรียบร้อยหรือยัง

เปิด Chrome ขึ้นมาแล้วพิมพ์ http://127.0.0.1:8000/ หากแสดงผลตามภาพก็แสดงว่าติดตั้งเสร็จสมบูรณ์

จากนั้นให้เรา Config ค่าเพิ่มเติมนิดหน่อยเพื่อเปิดใช้งานตัว tcpdf ให้เปิดไฟล์ config/app.php ขึ้นมาแล้วเพิ่มคำสั่งเข้าไปใน aliases

'providers' => [
//...

]

'aliases' => [
//...
'PDF' => Elibyy\TCPDF\Facades\TCPDF::class
]

เป็นอันเสร็จครับ ทีนี้ก็ลองเรียกใช้งานดูครับ แต่ก่อนอื่นก็ให้เราสร้าง Route สำหรับเรียกใช้งานก่อนนะครับผม โดยไปที่ Folder Routes/web.php แล้วเพิ่มคำสั่งเข้าไป

Route::get(‘/tcpdf’, ‘TestController@index’);

แล้วทำงานสร้าง Controller ด้วยคำสั่ง

php artisan make:controller TestController

ก็จะได้ controller เพิ่มเข้ามาใน Project เรา จะอยู่ใน

app/Http/Controller/TestController.php 

จากนั้นก็วางคำสั่งสำหรับสร้าง PDF ตามนี้ครับ สามารถดูคำสั่งการใช้งานต่างๆ ในเว็บเลยนะครับ https://tcpdf.org/ อย่าลืม use PDF; มาใช้งานด้วยนะครับผม

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use PDF;class TestController extends Controller{public function index(){PDF::AddPage(‘L’, ‘A4’);PDF::SetFont(‘freeserif ‘, ‘B’, 20, ‘’, ‘false’);PDF::SetY(10); //ระยะห่างจากด้านบนมาล่างPDF::SetX(0); //ระยะห่างจากซ้ายไปขวาPDF::Cell(0, 0, ‘อีสานเดฟ มหาสารคาม’, 0, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);PDF::SetFont(‘freeserif ‘, ‘B’, 16, ‘’, ‘false’);PDF::SetY(30); //ระยะห่างจากด้านบนมาล่างPDF::SetX(10); //ระยะห่างจากซ้ายไปขวาPDF::Cell(0, 0, ‘วัน/เดือน/ปี’, 1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);PDF::SetFont(‘freeserif ‘, ‘B’, 16, ‘’, ‘false’);PDF::SetY(34); //ระยะห่างจากด้านบนมาล่างPDF::SetX(10); //ระยะห่างจากซ้ายไปขวาPDF::MultiCell(40, 5, ‘เดือน/ปี’, 1, ‘C’,0, 1, ‘’, ‘’, true);PDF::Output(‘PDF-Report.pdf’,’I’);}}

เสร็จแล้วก็ Save แล้วเปิด Chrome ขึ้นมาดูครับ

ก็จะเห็นว่า ตัว TCPDF มันจะมีภาษาไทยให้เราสามารถใช้งานได้อยู่ ถ้าเราไม่ชอบฟอนต์ที่มีมาให้ก็สามารถเพิ่มได้ โดยเข้าไปที่เว็บนี้ fonts.snm-portal.com ครับ

โดยผมจะเพิ่มฟอนต์ ThaisarabunNew เข้ามาใช้งานใน project ของผม ให้เราโหลด ฟอนต์มาเก็บไว้ที่เครื่องเราก่อนนะครับ จากนั้นเข้าไปที่เว็บ แล้วเลือกลากฟ้อนต์ที่เราต้องการ เพื่อให้เว็บ convert ฟอนต์ให้เรา

เว็บสำหรับดาวน์โหลดฟอนต์ https://www.f0nt.com/

ผมเลือกใช้ฟอนต์ ThaisarabunNew 2 style คือ ฟอนต์ธรรมดา กับ ฟอนต์ที่เป็นตัวหนา จากรูปด้านบน ให้เราติ๊กถูกหลัง I have rights to convert this font แล้วคลิกดาวน์โหลดไฟล์ด้านล่างให้ครบทุกไฟล์ แล้วทำการ copy ไฟล์ทั้งหมดไปไว้ที่ Folder

/vendor/tecnickcom/tcpdf/fonts

จากนั้นก็ไปแก้ code ที่ controller ใหม่

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use PDF;class TestController extends Controller{public function index(){PDF::AddPage(‘L’, ‘A4’);PDF::SetFont(‘THSarabunNew’, ‘B’, 20, ‘’, ‘false’);PDF::SetY(10); //ระยะห่างจากด้านบนมาล่างPDF::SetX(0); //ระยะห่างจากซ้ายไปขวาPDF::Cell(0, 0, ‘อีสานเดฟ มหาสารคาม’, 0, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);PDF::SetFont(‘THSarabunNew’, ‘B’, 16, ‘’, ‘false’);PDF::SetY(30); //ระยะห่างจากด้านบนมาล่างPDF::SetX(10); //ระยะห่างจากซ้ายไปขวาPDF::Cell(0, 0, ‘วัน/เดือน/ปี’, 1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);PDF::SetFont(‘THSarabunNew’, ‘B’, 16, ‘’, ‘false’);PDF::SetY(34); //ระยะห่างจากด้านบนมาล่างPDF::SetX(10); //ระยะห่างจากซ้ายไปขวาPDF::MultiCell(40, 5, ‘เดือน/ปี’, 1, ‘C’,0, 1, ‘’, ‘’, true);PDF::Output(‘PDF-Report.pdf’,’I’);}}

เพียงเท่านี้ก็ได้ ฟอนต์สวยๆ มาใช้งานใน PDF เราหละ

ดาวน์โหลดไฟล์ตัวอย่างประกอบได้ที่ https://github.com/leksoft/tcpdf-laravel-by-esandev

ติดตาม Youtube ได้ที่ช่อง https://www.youtube.com/channel/UCSVkJ6YM7aTxzX1wlF5PtZA

--

--

Satoshi Dev
VisionDev

โปรแกรมเมอร์แห่งอีสานเดฟ