You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入含特殊字符的字体后,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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:26:20