使用Flying Saucer将HTML转PDF时的表格文本对齐异常问题
问题解答
1. 表格文本对齐差异问题
- 这不是Flying Saucer的预期行为,是它的CSS渲染规则和现代浏览器不一致导致的:
现代浏览器中<td>默认样式为text-align: left,但Flying Saucer 9.1.18对表格单元格的样式继承处理存在偏差,会错误继承父元素的居中对齐规则,即使子<td>未设置align属性。 - 解决方法(无需修改原HTML):
在PDF生成流程中注入全局CSS覆盖默认样式,示例代码如下:
这段CSS会强制所有表格单元格左对齐,覆盖Flying Saucer的错误继承逻辑。ITextRenderer renderer = new ITextRenderer(); // 读取原HTML/XML内容 String originalContent = ...; // 注入全局CSS强制单元格左对齐 String modifiedContent = "<style>table td { text-align: left !important; }</style>" + originalContent; renderer.setDocumentFromString(modifiedContent); renderer.layout(); renderer.createPDF(outputStream);
2. 商业使用许可问题
Flying Saucer 9.1.18采用LGPLv2.1开源许可,用于商业产品完全合规,需注意以下条款:
- 若仅使用未修改的库文件,无需开放你的商业产品源码,只需在产品文档/版权声明中明确标注使用了Flying Saucer,并提供该库的官方获取渠道信息;
- 若你修改了Flying Saucer的源码,那么修改后的代码部分必须以LGPLv2.1许可开源。
内容的提问来源于stack exchange,提问作者NewBond007
相关产品推荐
相关产品推荐

