在我的PDF下载中,我需要有可能使用英语和汉语作为插入文本的语言,但是当英语工作时,我无法使中文工作。
我遵循了here中的文档,但是无论我尝试使用哪种字体,新添加的字体始终显示为空框,更确切地说,是这样的[] [] [] []。
我采取的步骤如下:
从Google字体page下载了SC(和TC)字体
使用在线转换器将字体系列的Regular文件从.otf转换为.ttf(由于我认为转换器可能有问题,因此可以使用多个站点)。这导致两个aprox。 10kb的文件(一个用于TC,一个用于SC)。
使用pdfmake文档page中的script.sh,我已将.ttf字体转换为vfs_fonts.js,这成功创建了一个包含字体名称作为键和base64的对象。字符串作为值
在我的资产文件夹中移动了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文件,因为起初我以为我使用的是错误的汉字,但是无论使用哪个汉字都没关系,它仍然不起作用,并且在控制台或桌面上都没有收到任何错误。编译时间。我在这里想念什么?
编辑:这些是我要显示的字符,例如:简体中文体中文
答案 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>