PDFMake:无法显示中文字体

时间:2020-06-30 08:12:45

标签: pdfmake

在我的PDF下载中,我需要有可能使用英语和汉语作为插入文本的语言,但是当英语工作时,我无法使中文工作。

我遵循了here中的文档,但是无论我尝试使用哪种字体,新添加的字体始终显示为空框,更确切地说,是这样的[] [] [] []。

我采取的步骤如下:

  1. 从Google字体page下载了SC(和TC)字体

  2. 使用在线转换器将字体系列的Regular文件从.otf转换为.ttf(由于我认为转换器可能有问题,因此可以使用多个站点)。这导致两个aprox。 10kb的文件(一个用于TC,一个用于SC)。

  3. 使用pdfmake文档page中的script.sh,我已将.ttf字体转换为vfs_fonts.js,这成功创建了一个包含字体名称作为键和base64的对象。字符串作为值

  4. 在我的资产文件夹中移动了vfs_fonts.js文件后,将必要的代码添加到了pdf导出服务中

但是这些框仍然是空的。这是我的服务代码,其中pdfFonts.pdfMake.vfs引用新创建的vfs文件,而docDefinition的defaultStyle设置为字体:“ NotoCh”。

pdfMake.vfs = pdfFonts.pdfMake.vfs;

pdfMake.fonts = {
  NotoCh: {
    normal: 'NotoSansSC-Regular.ttf',
    bold: 'NotoSansTC-Regular.ttf',
    italics: 'NotoSansSC-Regular.ttf',
    bolditalics: 'NotoSansTC-Regular.ttf',
  },
};

我同时使用了SC和TC文件,因为起初我以为我使用的是错误的汉字,但是无论使用哪个汉字都没关系,它仍然不起作用,并且在控制台或桌面上都没有收到任何错误。编译时间。我在这里想念什么?

编辑:这些是我要显示的字符,例如:简体中文体中文

2 个答案:

答案 0 :(得分:1)

这似乎是与最新pdfkit版本0.11.0中存在的Noto字体相关的错误,该错误似乎已在pdfkit-next中修复。 Link找出错误

答案 1 :(得分:0)

不确定您是否已解决问题。我之前遇到过同样的问题,在尝试了许多在线发布的解决方案之后,我终于解决了问题:因此,只要您将自定义字体作为新的默认字体样式包含在其中,您所做的就是正确的并且可以使用您的文档定义。我在下面提供了我的测试html代码,供您参考。

注意:自定义字体文件不必为.ttf格式。我使用的是Google Fonts的Noto Sans SC,.otf文件工作正常。 (我正在使用pdfmake v0.1.68)。

<!DOCTYPE html>
<html>
<head>
  <title>PDFMake with Chinese Font</title>
  <meta charset='utf-8'>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.68/pdfmake.min.js"></script>
  <script src="vfs_fonts.js"></script>
</head>
<body>
  <div id="test">尝试加入简体中文</div>
<script>
  pdfMake.fonts = {
    NotoSansSC: {
      normal: 'NotoSansSC-Regular.otf',
      bold: 'NotoSansSC-Bold.otf',
    }
  };
  var docDefinition = {
    content: document.getElementById('test').innerHTML,
    defaultStyle: {
      font: 'NotoSansSC'
    }
  }
  pdfMake.createPdf(docDefinition).download();
</script>
</body>
</html>
相关问题