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

iText5.5.10写入Chunk换行无效 内容重叠首行如何解决

问题原因
  • iText 5.x版本中,Chunk是最基础的行内文本单元,不具备块级排版能力。直接向Document对象零散添加Chunk和Chunk.NEWLINE时,内置排版引擎无法正确计算每行的位置偏移,最终所有文本会重叠渲染在第一行初始位置。
  • 字符串拆分逻辑存在正则转义错误:String.split()方法的入参为正则表达式,|是正则中的元字符(代表或逻辑),如果要按照字面量|分割字符串,必须使用\\|进行转义,否则拆分结果完全不符合预期。
修正方案

使用块级元素Paragraph承载文本内容,Paragraph会自动处理换行排版,添加到Document后默认单独占一行,无需手动插入换行符,同时修正split方法的转义逻辑。
修正后的完整代码:

Document document = new Document(PageSize.A4, 20, 20, 20, 20);
PdfWriter.getInstance(document, new FileOutputStream("ticket.pdf"));
document.open();
Font font = FontFactory.getFont(FontFactory.COURIER, 16, BaseColor.BLACK);
// 转义正则元字符|,按字面量|拆分content
String[] tokens = content.split("\\|");
for (String token : tokens) {
    // 用Paragraph包裹文本,自动实现单行单token的排版效果
    document.add(new Paragraph(token, font));
}
document.close();

异常运行效果参考:
所有token重叠显示在PDF第一行

如果需要自定义Chunk的特殊属性(比如局部文本样式、锚点等),可以先构造Chunk实例,再传入Paragraph构造方法,排版逻辑不会受影响。

内容的提问来源于stack exchange,提问作者Aleksandar Cvisic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:36:16