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

PdfSharpCore与HtmlRendererCore无法渲染emoji的问题求助

解决PdfSharpCore渲染Emoji显示空白方框的问题

针对PdfSharpCore的修复方案

PdfSharpCore无法正常渲染Emoji的核心原因是默认使用的字体不包含Emoji字形,且对UTF-16代理对的处理存在局限。可通过以下方式解决:

  1. 使用支持Emoji的字体并嵌入到PDF中
    选择系统自带的Emoji兼容字体(如Windows的Segoe UI Emoji、macOS的Apple Color Emoji),创建XFont时开启字体嵌入和Unicode编码选项。

    修改后的代码示例:

    PdfDocument document = new PdfDocument();
    PdfPage page = document.AddPage();
    // 配置字体选项:Unicode编码 + 强制嵌入
    var fontOptions = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);
    // 使用支持Emoji的字体
    XFont emojiFont = new XFont("Segoe UI Emoji", 14, XFontStyle.Regular, fontOptions);
    XGraphics gfx = XGraphics.FromPdfPage(page);
    gfx.MUH = PdfFontEncoding.Unicode;
    gfx.DrawString("( ͡° ͜ʖ ͡°)🥒", emojiFont, new XSolidBrush(XColor.Black), 100, 100);
    

    跨平台部署时,可将字体文件打包到项目中,通过PrivateFontCollection加载:

    var privateFonts = new PrivateFontCollection();
    // 加载本地Emoji字体文件
    privateFonts.AddFontFile("SegoeUIEmoji.ttf");
    XFont customEmojiFont = new XFont(privateFonts.Families[0], 14, XFontStyle.Regular, fontOptions);
    
  2. 提交Issue到PdfSharpCore仓库
    代理对支持问题属于库的功能缺陷,提交Issue时附上测试代码和现象截图,可推动官方修复该问题。

商用免费无限制的PDF库推荐

若上述方案无法满足需求,推荐以下MIT/Apache许可的PDF库,原生支持Emoji渲染:

  • QuestPDF
    轻量级声明式PDF生成库,完全支持Emoji和复杂Unicode字符,API简洁,适配.NET Core/.NET 5+项目,商用无限制。

  • DinkToPdf
    基于wkhtmltopdf的.NET封装,支持HTML转PDF,依赖Chrome内核渲染逻辑,天然支持Emoji,动态链接模式下可商用。

内容的提问来源于stack exchange,提问作者Chase C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:35:27