我正在使用PDFMake在NodeJS 12的服务器端生成PDF。
PDF 呈现的文本混合了英语和外语字符。PDF 正常工作,但是,没有一个外语字符正确呈现。我做了一些研究,看起来我需要安装一种可以处理外语字符的自定义字体。
我按照这里接受的答案在服务器端安装了Google NotoSans字体。
如何在 Node 上创建 PDF.js使用 PDFMake 和 vfs_fonts?
fonts = {
NotoSans: {
normal: path.join(__dirname, '..', 'public', 'fonts/NotoSans-unhinted/NotoSans-Black.ttf'),
bold: path.join(__dirname, '..', 'public', 'fonts/NotoSans-unhinted/NotoSans-Bold.ttf'),
italics: path.join(__dirname, '..', 'public','fonts/NotoSans-unhinted/NotoSans-BlackItalic.ttf'),
bolditalics: path.join(__dirname, '..', 'public','fonts/NotoSans-unhinted/NotoSans-BoldItalic.ttf'),
},
}
字体安装正确(所有英文字符都正确显示在此字体中(。但是,中文和其他外语字符不起作用(它们只是显示为空矩形(。
我可以采取哪些其他故障排除步骤来解决此问题?谢谢!
更新:我安装的字体实际上并不支持我需要的所有语言,是否有支持它的字体?还是我需要找到一种方法将多种字体组合成一种字体?
您必须检查字体的语言支持!
Noto Sans没有中文和阿拉伯语支持。 文档
您可以检测内容的语言并重定向到正确的字体:Noto 字体列表或使用具有广泛语言支持的字体,如 Unicode 字体
如果您使用 Arial Unicode MS 作为@gmazoni segust,您将同时获得所有语言字符。 使用pdfmake文档中的过程,您可以从此处下载字体