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

使用openhtmltopdf的AutoFont添加PDF字体失败,求解决方案

openhtmltopdf 字体未应用问题排查与解决

问题现象

使用openhtmltopdf的AutoFont类加载Roboto字体目录,控制台显示字体已加载,但生成的PDF未应用该字体。

排查与解决步骤

  • 验证HTML模板的CSS字体引用
    确保HTML中的font-family属性值与AutoFont.toCSSEscapedFontFamily(fonts)生成的字体族名完全匹配。可以先将fontFamily变量打印到控制台,比如输出为Roboto,则CSS中需设置:

    body {
      font-family: 'Roboto', sans-serif;
    }
    

    同时检查是否有其他CSS规则(如内联样式、优先级更高的选择器)覆盖了字体设置。

  • 确认字体文件有效性
    检查/Users/fabio/Downloads/Roboto/目录下的字体文件是否完整(包含Regular、Bold等所需变体),且为openhtmltopdf支持的TrueType(.ttf)或OpenType(.otf)格式,避免使用损坏的字体文件。

  • 调整FastMode设置
    builder.useFastMode()可能会影响字体的解析逻辑,尝试注释掉该行代码后重新生成PDF,看字体是否正常应用。

  • 手动添加字体(备选方案)
    若AutoFont自动加载存在问题,可尝试手动指定字体文件,替代AutoFont相关代码:

    // 替换AutoFont相关代码
    builder.useFont(new File("/Users/fabio/Downloads/Roboto/Roboto-Regular.ttf"), "Roboto");
    builder.useFont(new File("/Users/fabio/Downloads/Roboto/Roboto-Bold.ttf"), "Roboto", PdfRendererBuilder.FontStyle.BOLD);
    builder.useFont(new File("/Users/fabio/Downloads/Roboto/Roboto-Italic.ttf"), "Roboto", PdfRendererBuilder.FontStyle.ITALIC);
    

    这种方式更直接可控,能确保字体被正确注册。

  • 检查字体加载日志
    可以开启openhtmltopdf的调试日志,查看字体加载和匹配的详细过程,定位是否存在字体匹配失败的情况。

内容的提问来源于stack exchange,提问作者Fabio Ebner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:50:18