JavaScript—สร้างไฟล์ pdf ด้วย pdfmake และเพิ่มฟอนต์ Sarabun สำหรับภาษาไทย

มีโปรเจค Web App ที่ต้องมีการสร้าง pdf file เลยต้องมาค้นหา library และก็ได้มาพบกับ pdfmake ซึ่งก็พบว่าใช้งานง่ายไม่ซับซ้อน แต่ไม่มีอักษรที่รองรับภาษาไทยเป็นชุดอักษรเริ่มต้น🥺 แต่สามารถเพิ่มฟอนต์ที่ต้องการใช้งานได้ มาดูกันครับว่าจะทำการการเพิ่มฟอนต์ Sarabun สำหรับภาษาไทยได้อย่างไรครับ

ก่อนอื่นเลยให้ download font ที่ต้องการใช้งานทั้ง Sarabun และ Roboto (เป็น Default ของ pdfmake ต้องกำหนดด้วยทุกครั้งครับ) จาก Google font มาเก็บไว้ก่อนเลย ที่ใช้งานก็มีแค่ 4 แบบ ตามนี้


ติดตั้ง pdfmake

ไปที่ folder project ที่ต้องการ แล้วติดตั้งผ่าน Node Package Manager ได้เลย

npm install pdfmake --save

import pdfmake และ pdfFonts เข้าไปใช้งาน

สร้าง function makePDF() สำหรับทดสอบเข้ากับปุ่มที่ต้องการ

สิ่งที่ได้ไม่ support ภาษาไทย 🥺🥺🥺


ติดตั้งฟอนต์ Sarabun สำหรับภาษาไทย

ติดตั้ง gulp ก่อนนะ รายละเอียดตามนี้เลย https://gulpjs.com/docs/en/getting-started/quick-start/

npm install --global gulp-cli

สร้าง folder examples/fonts ที่ (project folder)/node_modules/pdfmake/ แล้ว copy font ทั้ง Sarabun และ Roboto ไปไว้ใน folder เลยครับ

เปิด command line เข้าไปยัง (project folder)/node_modules/pdfmake/ แล้วสั่ง run

npm install

ตามด้วย

gulp buildFonts

ลองเปิด ไฟล์ vsf_fonts.js ใหม่ และค้นตามชื่อ font ถ้าพบ font ที่เราต้องการใช้ก็เป็นอันว่าสำเร็จ🔥


เรียกใช้งาน font ภาษาไทย

ได้ pdf ที่ support ภาษาไทยแล้วครับ 😊😊😊

ตัวอย่างเอกสารภาษาไทยที่สร้างด้วย pdfmake และติดตั้งฟอนต์ THSarabunNew จะเห็นได้ว่า รองรับภาษาไทยได้ดีมากๆ เลยครับ 😊😊😊

ตัวอย่างการสร้าง Report จากข้อมูลที่กรอกในแบบฟอร์ม

😊Tips : สำหรับไฟล์ vsf_fonts.js ที่ได้มาหลังจากเพิ่มฟอนต์ไปแล้วนั้น เราสามารถ Copy ไปไว้ใช้ใน Project หรืองานอื่นๆ ได้เลย ไม่ต้องเสียเวลาสร้างใหม่

รายละเอียดขั้นตอนตาม document https://pdfmake.github.io/docs/fonts/custom-fonts-client-side/vfs/


ท้ายสุด เพียงแค่นี้ก็จะได้ฟังก์ชันการสร้างไฟล์ pdf ที่รองรับภาษาไทยและยังกำหนดฟอนต์ตามที่ต้องการได้อีกด้วย ก็หวังว่าจะเป็นแนวทางให้เพื่อนๆ นำไปใช้งานได้อีกเช่นเคยครับ 🧑‍🚀


โปรโมชั่น คูปองส่วนลด และดีล ที่ดีที่สุดของร้านค้าออนไลน์กว่า 300 แบรนด์พร้อมรับเงินคืนจาก ShopBack
 https://bit.ly/3c4tlmV

Ruk-Com จดโดเมน-เช่าโฮสต์ ราคาประหยัด พร้อมให้บริการใน 1 นาที
 http://bit.ly/36q8A12