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

QuestPDF在64位Amazon Linux的.NET Core环境中文本不显示问题求助

解决QuestPDF在Amazon Linux环境下文本不显示的问题

你遇到的问题大概率是Linux服务器缺少默认字体导致的——Windows系统默认预装了大量常用字体,但无GUI的Amazon Linux服务器通常不会自带这些字体,而QuestPDF依赖SkiaSharp渲染文本,SkiaSharp需要系统有可用字体才能正常输出文本内容(图片渲染不依赖字体,所以能正常显示)。以下是几种可行的解决方法:

方法1:安装系统字体包

Amazon Linux属于RHEL兼容发行版,你可以通过包管理器安装常用字体包:

  • 对于Amazon Linux 2,执行:
    sudo yum install fontconfig liberation-fonts
    
  • 对于Amazon Linux 2023,执行:
    sudo dnf install fontconfig liberation-fonts
    

fontconfig是SkiaSharp依赖的字体配置工具,liberation-fonts是一套开源的通用字体,能覆盖大部分文本渲染需求。安装完成后重启你的.NET应用,应该就能正常显示文本了。

方法2:嵌入自定义字体到应用

如果不想依赖系统字体(比如服务器权限受限,或者需要特定字体样式),可以将字体文件嵌入到你的项目中,让QuestPDF直接使用内嵌字体:

  1. 下载你需要的字体文件(比如Roboto、Arial等,确保字体文件格式为TTF或OTF)。
  2. 将字体文件添加到你的.NET项目中,右键文件→属性,设置复制到输出目录为「始终复制」或「如果较新则复制」。
  3. 在应用启动时注册字体:
    // 假设字体文件放在项目根目录,输出后路径为当前目录下的字体文件
    QuestPDF.Drawing.FontManager.RegisterFontFromFile("Roboto-Regular.ttf");
    QuestPDF.Drawing.FontManager.RegisterFontFromFile("Roboto-Bold.ttf"); // 如果需要粗体样式
    
  4. 在TextStyle中指定使用该字体:
    column.Item().Text("SKIN SCAN RESULTS", TextStyle.Default.Size(20).SemiBold().Color("#0DD0D9").FontFamily("Roboto"));
    

这样无论服务器环境有没有预装字体,QuestPDF都能使用你内嵌的字体渲染文本。

方法3:检查SkiaSharp版本兼容性

确认你安装的SkiaSharp.NativeAssets.Linux.NoDependencies版本与QuestPDF 2022.2.6依赖的SkiaSharp主包版本一致。QuestPDF 2022.2.6通常依赖SkiaSharp 2.88.x系列,如果你安装的NativeAssets版本不匹配,可能会导致渲染异常。可以在NuGet包管理器中查看并调整版本,保持两者版本统一。


内容的提问来源于stack exchange,提问作者Muhammad Azim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:19:07