导入含特殊字符的字体后,pdfmake仍无法显示特殊字符求助
.Net项目中pdfmake特殊字符无法显示的问题
问题概述
在.Net(cshtml+JavaScript)项目中使用pdfmake JS库生成PDF时,特殊字符显示异常:已确认所用TTF字体包含目标特殊字符(本地安装后在Inkscape中验证),但PDF生成后仅基础字符正常显示,特殊字符(űáőúéöüó)全部无法显示。
操作步骤
- 将TTF字体转换为Base64字符串并赋值给JS变量(如
AdventProRegular) - 将Base64字符串写入pdfmake虚拟文件系统(
pdfMake.vfs) - 配置
pdfMake.fonts注册自定义字体 - 创建包含特殊字符(
startűáőúéöüóend)的文档定义,指定自定义字体 - 生成并打开PDF
项目环境
- 项目类型:.Net项目(cshtml+JavaScript)
- 开发工具:Microsoft Visual Studio Community 2022(64位)
- 测试浏览器:Chrome
- 操作系统:Windows
相关代码片段
CSHTML中导入pdfmake库
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.8/pdfmake.min.js" integrity="sha512-uVTNNXu6Z1rrgpMLuErTMferac7mGwfA7/oXfuGbpSmBqcopa8jCURWE1rBF3LMg7Zir+avOX807eGwHaL7akA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.8/vfs_fonts.min.js" integrity="sha512-EFlschXPq/G5zunGPRSYqazR1CMKj0cQc8v6eMrQwybxgIbhsfoO5NAMQX3xFDQIbFlViv53o7Hy+yCWw6iZxA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
JS中字体配置与PDF生成代码
pdfMake.vfs['AdventProRegular.ttf'] = AdventProRegular; pdfMake.vfs['Andika.ttf'] = Andika; pdfMake.vfs['SpecialElite.ttf'] = SpecialElite; pdfMake.vfs['Ultra.ttf'] = Ultra; pdfMake.fonts = { AdventPro: { normal: 'AdventProRegular.ttf', }, Andika: { normal: 'Andika.ttf' }, SpecialElite: { normal: 'SpecialElite.ttf' }, Ultra: { normal: 'Ultra.ttf' }, }; var docDefinition = { content: 'startűáőúéöüóend', defaultStyle: { font: 'Ultra' } }; // Create PDF and open in new window pdfMake.createPdf(docDefinition).open();
内容的提问来源于stack exchange,提问作者Sano Kulin
相关产品推荐
相关产品推荐

