使用flying-saucer-pdf转HTML到PDF时遇Font size too small错误求助
解决flying-saucer-pdf转换PDF时"Font size too small: 0.0"错误的方案
1. 排查HTML中的显性0字号设置
- 全局搜索HTML及关联CSS里的
font-size: 0、font-size: 0px、font-size: 0em这类直接设置0字号的代码,尤其是用来消除inline-block元素间距的场景,替换成font-size: 1px,或者改用flex布局处理元素间距。 - 检查是否存在
font-size: 0%这类相对单位设置,这类值也会被解析为0,调整为最小合法字号(比如1px)。
2. 检查动态生成的样式逻辑
如果HTML是通过模板引擎(Thymeleaf、Freemarker等)生成的,排查动态赋值字号的代码:
<p style="font-size: ${fontSize}px">示例文本</p>
确保动态变量fontSize不会为空或0,添加默认值兜底,比如${fontSize ?: 12}px。
3. 开启日志定位具体元素
在Spring Boot的配置文件中开启flying-saucer的DEBUG日志,它会输出每个元素的样式解析过程:
logging: level: org.xhtmlrenderer: DEBUG
运行转换代码后,在日志中搜索font-size相关条目,找到值为0的元素所在的HTML路径,精准定位问题代码段。
4. 全局强制设置最小字号(兜底方案)
如果暂时找不到具体问题代码,可通过全局CSS强制覆盖所有元素的0字号:
* { font-size: max(1px, inherit) !important; }
将这段代码添加到HTML的<style>标签中,确保优先级足够覆盖原有样式。
5. 排查间接影响字号的属性
- 检查是否有
line-height: 0这类设置,部分场景下会间接触发字号计算异常,调整为合理值(比如1.2)。 - 确认隐藏元素(
display: none)的样式,即使元素隐藏,flying-saucer仍可能解析其样式,若包含0字号建议修改,或确保隐藏元素被排除在PDF解析流程外。
内容的提问来源于stack exchange,提问作者sinclairjaza
相关产品推荐
相关产品推荐

