หน้าแรกผลงานความสำเร็จปรึกษาโปรเจกต์ของคุณ
ปรึกษาโปรเจกต์ของคุณ
vue.js + pdfmake.js สอนวิธีแสดงภาษาไทย
เทคโนโลยี

vue.js + pdfmake.js สอนวิธีแสดงภาษาไทย

15 ต.ค. 2569

ใช้ Vue.js + Pdfmake.js สร้าง PDF ให้แสดงภาษาไทยได้

ผมได้ research ตัว generate pdf แล้วได้พบว่าตัวนี้ใช้งานง่ายสุด สามารถใช้ได้ทั้ง server/client รวมถึงสามารถ custom font ได้

Article illustration 1
Article content divider

ผมจะติต่างว่าทุกคนมีโปรเจค vue.js แล้ว อันดับแรกลง pdfmake ก่อนเลยครับ

npm install pdfmake

จากนั้นสร้างไฟล์ component ในที่นี้ผมใช้ App.vue เลย

อธิบายโค้ดข้างต้น

  • ประกาศตัวแปร docDefinition object มี content array เป็น ‘English, ‘ไทย’

  • กำหนด fonts Roboto ซึ่งเป็น default font ต้องมี ไม่งั้นจะ error

  • สร้าง pdf โดยคำสั่ง pdfMake.createPdf() และ .open({}, window) เพื่อเปิด pdf ในหน้าปัจจุบัน

Article illustration 2
Article content divider

เปิด browser จะเห็น pdf ที่มีตัวหนังสือ ‘English’ กับตัวหนังสือต่างดาว ซึ่งก็คือ ตัวหนังสือภาษาไทย แต่ font roboto ไม่สามารถอ่านภาษาไทย ขั้นตอนต่อไป generate font กันครับ

จากที่ดูจากตัวอย่าง code ข้างบน สามารถเพิ่ม font ได้โดยใช้ cdn ได้เลย แต่จากที่ผมลองใช้ url ของ google font ไม่สามารถใช้ได้ เลยเจอไลบรารี่หนึ่งที่ทำการ generate font ให้ นั่นคือ pdfmake-font-generator

npm install pdfmake-font-generator --save-dev

สามารถ install package โดยลงแบบ dev dependencies

npm install -g pdfmake-font-generator

หรือ install package แบบ global ได้ครับ

Article illustration 3
Article content divider

ผมทำการดาวน์โหลด Kanit font จาก google font และเก็บไว้ที่ floder my-fonts

pdfmakefg ./src/assets/my-fonts ./src/assets/custom-fonts.js

pdfmakefg คือ command generate font วิธีใช้: pdfmakefg <source directory><destination directory>

กลับมาที่โค้ด

  • impot custom font ที่ได้จากการ generate

  • ดึงค่า vfs จากค่าที่ได้จากการ generate

  • เพิ่ม font kanit

  • เพิ่ม font kanit เป็น font default

Article illustration 4
Article content divider

กลับมาที่ browser จะได้ข้อความที่เป็นภาษาไทยตามที่ต้องการ เย้!

แถมมม!!

ผมขออีกหน่อย 555 นั่นคือ ใช้งานพวก font icon อย่างเช่น fontawesome วิธีทำก็คล้าย ๆ กับพวก font เพียงแต่สามารถดาวน์โหลดจาก https://fontello.com เท่านั้น

Article illustration 5
Article content divider

ทำการเพิ่ม fontello.tff ไว้ที่ my-fonts directory

pdfmakefg ./src/assets/my-fonts ./src/assets/custom-fonts.js

ทำการ generate font

Article illustration 6
Article illustration 7
Article content divider

fontello จากที่ดาวน์โหลดจะมีไฟล์ fontello-codes.css ซึ่งข้อความที่จะใช้แสดงสามารถคัดลอกจากรูปสี่เหลี่ยม

กลับมาที่โค้ด

  • ทำการเพิ่ม FontTello font

  • เพิ่ม font tello ที่คัดลอกจาก fontello-codes.css มี style ชื่อ icon

  • เพิ่ม styles ชื่อ icon โดยที่ font เป็น Fontello

Article illustration 8
Article content divider

กลับมาที่ browser ตัว pdf แสดง icon กล้องตามที่ผมดาวน์โหลดไว้ เป็นอันเสร็จสิ้น!!

bpampuch/pdfmake Client/server side PDF printing in pure JavaScript - bpampuch/pdfmakegithub.com

Lugriz/pdfmake-font-generator CLI to generate custom fonts to use them with pdfmake You can install it locally as a dev dependency, since it is only…github.com

บทความที่เกี่ยวข้อง

เทคโนโลยี

TypeScript คืออะไร? แล้วคุณรู้หรือไม่ว่าใช้งานยังไง

บทความแนะนำภาษา TypeScript ว่าคืออะไร ทำไมถึงควรเรียนรู้ และช่วยให้การเขียนโปรแกรมปลอดภัยและจัดการง่ายขึ้นอย่างไร

เทคโนโลยี

มาทำความรู้จักกับ Lodash กัน

ก่อนอื่นเลยต้องขอสวัสดีพี่ๆน้องเพื่อนๆ ชาวโปรแกรมเมอร์ กันก่อนนะครับ สำหรับ Blog นี้ผมจะพาทุกๆคนไปทำความรู้จักกับ Libary…

เทคโนโลยี

Multiple Language ด้วย i18n บน nuxt.js Framework

สวัสดีครับ พอดีผมได้มีโอกาศลองใช้งานเจ้าตัว i18n เห็นว่าเจ้าตัวเนี่ย มันใช้งานค่อนข้างง่ายพอสมควรครับ วันนี้เลยจะมาแชร์ถึงการ setting…

I GEAR GEEK

Technology Partner ขับเคลื่อน Digital Transformation ให้ธุรกิจคุณ

โซลูชัน

  • ERP และระบบธุรกิจ
  • AI Knowledge และ AI Agents
  • Customer Data & Marketing Automations

บริการ

  • Web Application, Mobile Application

บริษัท

  • บทความ
  • แกลเลอรี
  • ร่วมงานกับเรา

ติดต่อ

marketing@igeargeek.com

Malada space ชั้น 2, 89/9 หมู่ 5 ตำบลสุเทพ อำเภอเมืองเชียงใหม่ จังหวัดเชียงใหม่ 50200

LINE OA@igeargeekสอบถามโปรเจกต์083-579-5068สมัครงานและฝึกงาน083-254-2241
© 2026 I GEAR GEEK สงวนลิขสิทธิ์
ปรึกษาโปรเจกต์ของคุณ