UOS(基于 RHEL 7)/ .NET Core 应用 / DevExpress 报表打印中文缺失问题

📅 2026/8/1 21:45:03 👁️ 阅读次数 📝 编程学习
UOS(基于 RHEL 7)/ .NET Core 应用 / DevExpress 报表打印中文缺失问题

UOS(基于 RHEL 7)/ .NET Core 应用 / DevExpress 报表打印中文缺失问题

问题现象

服务器环境:统信 UOS(基于 RHEL 7)/ .NET Core 应用 / DevExpress 报表打印

打印预览时发现一个奇怪的现象:

  • 姓名 → 显示为 (“名”丢了)

  • 名名名名名名名 → 显示为 (连续相同字符只显示一个)

  • 名称名词名表 → 显示为 名称名词名表(非连续字符正常)

libgdiplus 版本 4.2 在渲染连续相同字符时存在 Bug。当渲染“名名名名名名名”时,它错误地合并了相同的字符,导致只显示一个“名”。而“名称名词名表”因为字符不完全相同,所以能完整显示。

升级到 libgdiplus 6.2 后,问题解决!

一、安装 libgdiplus 6.2

1.1 安装编译依赖 

sudo yum install -y autoconf automake libtool \glib2-devel cairo-devel \libjpeg-turbo-devel libpng-devel libtiff-devel \giflib-devel libX11-devel \fontconfig-devel freetype-devel \libexif-devel

.2 下载源码 

cd /root
wget https://dl.winehq.org/mono/sources/libgdiplus/libgdiplus-6.2.tar.gz


 

1.3 编译安装 

tar -zxvf libgdiplus-6.2.tar.gz
cd libgdiplus-6.2
autoreconf -fi
./configure --prefix=/usr
make
sudo make install

1.4 验证版本 

pkg-config --modversion libgdiplus
# 输出:6.2 ✅
 


其他:

sudo cat /proc/$(pgrep -f "WebApi.dll" | tail -1)/environ | tr '\0' '\n' | grep -i libgidplus
# 输出:LIBGIDPLUS_FALLBACK_FONT=Noto Sans CJK SC ✅

 
[Unit]
Description=6.5web
After=network.target[Service]
WorkingDirectory=/var/www/6.5web
ExecStart=/bin/bash -c 'LIBGIDPLUS_FALLBACK_FONT="Noto Sans CJK SC" FONTCONFIG_PATH=/etc/fonts /usr/bin/dotnet /var/www/6.5web/WEBLAS.dll --urls=http://0.0.0.0:8001'
Restart=always
RestartSec=10
SyslogIdentifier=6.5web
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false[Install]
WantedBy=multi-user.target