pdfmake 在服务器端为 CJK、阿拉伯语和其他外语安装自定义字体

pdfmake install custom fonts on server side for CJK, arabic, and other foreign languages

我正在使用 PDFMake 在服务器端使用 NodeJS 12 生成 PDF。

PDF 呈现的文本混合了英语和外语字符。 PDF 可以正常工作,但是 none 的外语字符可以正确呈现。我做了一些研究,看来我需要安装可以处理外语字符的自定义字体。

我按照此处接受的答案在服务器端安装 Google NotoSans 字体。

How to create a PDF on Node.js using PDFMake and 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 不支持中文和阿拉伯语。 DOCS

您可以检测内容的语言并重定向到正确的字体:Noto Fonts List or use a font with a wide language support, like Unicode Fonts

如果您使用 Arial Unicode MS 作为@gmazoni segust,您将同时获得所有语言字符。 使用来自 pdfmake docs and you can download the font from here

的过程