ใช้ในการแก้ปัญหารหัสภาษาจีนที่อ่านไม่ออกเมื่อสร้าง pdfmake, pdfhtml5, dataTables
ปัจจุบันวิดเจ็ตที่เล็กที่สุดในการสร้างไฟล์ตัวอักษรหลังจากรองรับ VFS_FONTS.JS BASE64 การเข้ารหัสของจีน
โดยค่าเริ่มต้นฟอนต์จีนที่เล็กที่สุดจะถูกรวมเข้ากับ 2 รูปแบบตัวหนาและสไตล์ธรรมดาซึ่งเป็นเพียง 1.7m มันควรจะเป็นแบบอักษรจีนที่เล็กที่สุดในปัจจุบัน! -
ก่อนอื่นคุณต้องติดตั้งสภาพแวดล้อมโหนด ปัจจุบันโหนดเวอร์ชันทั้งหมด V16, 14, 12 และ 10 นั้นดี
ประการที่สองใส่ไฟล์ฟอนต์ VFS ที่คุณต้องการสร้างลงในโฟลเดอร์ FONTS จากนั้นเรียกใช้ CNPM ติดตั้ง && npm เรียกใช้งาน
cnpm install
# 构建 vfs_fonts.js
npm run buildโปรดทราบว่าฟอนต์ทั้งหมดภายใต้โฟลเดอร์ฟอนต์จะถูกบรรจุ หากคุณไม่ต้องการแบบอักษร Roboto เริ่มต้นอย่างเป็นทางการคุณสามารถลบไฟล์ Roboto-XXX ได้!
แก้ไขสคริปต์สคริปต์ที่เกี่ยวข้องในไฟล์ package.json
"scripts" : {
"build:vfs" : " node node_modules/pdfmake/build-vfs.js " ./fonts " " ./build/vfs_fonts.js " "
},ชื่อไฟล์ build-vfs.js vfs ที่สร้างโดยโฟลเดอร์ที่เก็บแบบอักษร
ค้นหา var defaultClientFonts = {} ในไฟล์ pdfmake.js ลงทะเบียนตัวอักษร VFS ที่คุณสร้างขึ้นลงทะเบียนชื่อตัวอักษรและรูปแบบตัวอักษรที่สอดคล้องกันที่สอดคล้องกับชื่อตัวอักษร {ปกติ: xxx, ตัวหนา: xxx, italic: xxx, italic ตัวหนา: xxx}
var defaultClientFonts = {
Hyzh : {
normal : 'hyzjh_zh.ttf' ,
bold : 'hylxt_bold.ttf' ,
italics : 'hyzjh_zh.ttf' ,
bolditalics : 'hylxt_bold.ttf'
} ,
Roboto : {
normal : 'Roboto-Regular.ttf' ,
bold : 'Roboto-Medium.ttf' ,
italics : 'Roboto-Italic.ttf' ,
bolditalics : 'Roboto-MediumItalic.ttf'
}
} ;การกำหนดค่าเริ่มต้น
var defaultClientFonts = {
Roboto : {
normal : 'Roboto-Regular.ttf' ,
bold : 'Roboto-Medium.ttf' ,
italics : 'Roboto-Italic.ttf' ,
bolditalics : 'Roboto-MediumItalic.ttf'
}
} ; <!DOCTYPE html >
< html lang =" zh-CN " >
< head >
< meta charset =" utf-8 " >
< title > Pdfmake export Chinese PDF </ title >
< script src =" pdfmake.min.js " > </ script >
< script src =" vfs_fonts.js " > </ script >
< script >
function down ( data ) {
var doc = {
content : [
data ,
'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines'
] ,
defaultStyle : {
font : 'Hyzh' ,
fontSize : 12
}
} ;
pdfMake . fonts = {
Roboto : {
normal : 'Roboto-Regular.ttf' ,
bold : 'Roboto-Medium.ttf' ,
italics : 'Roboto-Italic.ttf' ,
bolditalics : 'Roboto-Italic.ttf'
} ,
Hyzh : {
normal : 'hyzjh_zh.ttf' ,
bold : 'hylxt_bold.ttf' ,
italics : 'hyzjh_zh.ttf' ,
bolditalics : 'hylxt_bold.ttf'
}
} ;
pdfMake . createPdf ( doc ) . download ( ) ;
}
</ script >
</ head >
< body >
< button onclick =" down('最小的支持中文显示的pdf生成工具') " >下载</ button >
</ body >
</ html > ข้อมูลเพิ่มเติม https://datatables.net/reference/button/pdfhtml5 https://datatables.club/reference/button/pdfhtml5.html