使用pdfmake生成PDF时,toLocaleString("fr-FR")输出未知字符求助
解决pdfmake中toLocaleString("fr-FR")生成未知字符的问题
使用pdfmake生成PDF时,调用Number.toLocaleString("fr-FR")处理数字后,PDF中出现未知方块字符。测试代码如下:
var y = Number(120000); var x = y.toLocaleString("fr-FR").toString(); var dd = { content: [ x.toString() ] }
问题原因
toLocaleString("fr-FR")返回的法语格式数字中,千位分隔符是Unicode不间断空格(U+00A0),而pdfmake默认的基础字体不包含该字符的渲染字形,导致显示为未知方块。
解决方案
方案1:替换不间断空格为普通空格(临时快速解决)
修改代码,将结果中的不间断空格替换成普通空格:
var y = Number(120000); // 替换所有不间断空格为普通空格 var x = y.toLocaleString("fr-FR").replace(/\u00A0/g, ' '); var dd = { content: [x] };
方案2:使用支持特殊字符的完整字体(根源解决)
配置pdfmake使用包含该字符的字体(比如完整的Roboto字体包),确保字体文件可访问:
// 定义字体配置 pdfMake.fonts = { Roboto: { normal: 'Roboto-Regular.ttf', bold: 'Roboto-Bold.ttf', italics: 'Roboto-Italic.ttf', bolditalics: 'Roboto-BoldItalic.ttf' } }; var y = Number(120000); var x = y.toLocaleString("fr-FR"); var dd = { content: [x], defaultStyle: { font: 'Roboto' } };
内容的提问来源于stack exchange,提问作者j10
相关产品推荐
相关产品推荐

