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

Rotativa部署到IIS后尼泊尔语字体显示为方块怎么解决?

Rotativa部署IIS后尼泊尔语字体显示为方块的排查解决方法

问题根因说明

这个问题的核心是Rotativa底层依赖的wkhtmltopdf组件,在IIS的运行环境下无法读取到所需的尼泊尔语字体,和本地开发环境的权限、字体安装状态差异直接相关。

排查步骤

  • 检查服务器字体安装状态
    本地开发环境通常已经提前安装了用到的尼泊尔语字体,但部署用的服务器默认没有对应字体。可以打开服务器的C:\Windows\Fonts目录,搜索你项目中使用的尼泊尔语字体(常见的如Noto Sans Devanagari、Preeti),如果搜索不到,直接将本地的字体文件复制到服务器,右键选择「安装」即可。
  • 检查IIS应用池账户的字体读取权限
    本地运行项目时使用的是当前登录的Windows用户,默认拥有系统字体的读取权限;但IIS的应用池默认使用低权限的内置账户,没有系统字体的读取权限。操作方法:找到字体文件→右键「属性」→「安全」选项卡→添加你的应用程序池对应的账户(格式为IIS AppPool\你的应用池名称),给该账户授予「读取和执行」权限。
  • 检查字体名称拼写匹配度
    确认CSS中写的font-family属性值和字体的正式名称完全一致,拼写错误会导致字体加载失败。你可以双击打开字体文件,顶部显示的字体名称就是需要写在font-family里的准确值。

最优通用解决方案(避免依赖服务器环境)

不需要依赖服务器安装的系统字体,直接将字体文件嵌入项目中,通过CSS的@font-face引入,适配所有部署环境,操作方法如下:

  1. 在项目中新建静态资源目录(比如/fonts),将用到的尼泊尔语字体文件放到该目录下
  2. 在全局CSS中添加自定义字体声明:
@font-face {
    font-family: 'NepaliCustom';
    src: url('/fonts/Preeti.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}
/* 给需要显示尼泊尔语的元素指定该字体 */
.nepali-content {
    font-family: 'NepaliCustom', sans-serif;
}
  1. 配置字体文件的发布属性:右键点击项目中的字体文件→「属性」→将「生成操作」设为「内容」,「复制到输出目录」设为「如果较新则复制」,避免发布时字体文件被忽略。
  2. 如果仍有编码问题,可以在调用Rotativa生成PDF时指定UTF-8编码:
return new ViewAsPdf("视图名称", 传递的模型)
{
    CustomSwitches = "--encoding UTF-8"
};

内容的提问来源于stack exchange,提问作者Mukesh shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:54:06