تستخدم لحل مشكلة التعليمات البرمجية المشوهة الصينية عند إنشاء pdfmake ، pdfhtml5 ، datatables
حاليًا أصغر عنصر واجهة مستخدم لإنشاء ملفات الخطية بعد دعم تشفير VFS_FONTS.JS الصيني BASE64
بشكل افتراضي ، تم دمج أصغر خط صيني مع اثنين من الأنماط الجريئة والأنماط العادية ، والتي هي فقط 1.7 متر. يجب أن يكون أصغر خط صيني في الوقت الحاضر! !
بادئ ذي بدء ، تحتاج إلى تثبيت بيئة عقدة. حاليًا ، جميع إصدارات العقدة V16 و 14 و 12 و 10 جيدة.
ثانياً ، ضع ملف خط VFS الذي تريد إنشاءه في مجلد الخطوط ، ثم قم بتشغيل CNPM Install && npm buy
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 الذي قمت بإنشائه ، وتسجيل اسم الخط ونمط الخط المقابل المقابل لاسم الخط {normal: xxx ، bold: xxx ، italic: xxx ، bold etalic: 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