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

Java中实现Word式段落两端对齐(避免最后一行强制对齐)

问题:Word两端对齐时最后一行被强制拉伸的解决办法

我使用Apache POI的XWPFParagraph设置ParagraphAlignment.BOTH实现Word文本两端对齐,但输出结果里最后一行也被强制拉伸,观感很差,请问该如何解决?

原代码

XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
paragraph.setAlignment(ParagraphAlignment.BOTH);
run.setText("...adding big text here...");
run.addBreak();

问题效果截图

问题效果截图

解决方法

问题根源

ParagraphAlignment.BOTH对应Word的“两端对齐”,但它会强制拉伸所有行包括最后一行。要实现Word默认的两端对齐(最后一行左对齐),需要额外配置段落的对齐特殊属性。

修改后的代码

XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();

// 设置基础两端对齐
paragraph.setAlignment(ParagraphAlignment.BOTH);

// 获取段落属性对象,配置最后一行左对齐
CTPPr pPr = paragraph.getCTP().getPPr();
if (pPr == null) {
    pPr = paragraph.getCTP().addNewPPr();
}
CTJc jc = pPr.getJc();
if (jc == null) {
    jc = pPr.addNewJc();
}
// 指定对齐类型为两端对齐,同时设置最后一行左对齐
jc.setVal(STJc.BOTH);
jc.addNewLastLine().setVal(STJc.LEFT);

run.setText("...adding big text here...");
run.addBreak();

原理说明

通过CTJc的lastLine属性明确指定最后一行采用左对齐,这样既保留了正文行的两端对齐效果,又避免最后一行被强制拉伸,和Word原生的两端对齐行为一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 23:09:54