在word中,段落可以设置的缩进有左缩进、右缩进、首行缩进或悬挂缩进。 Spire.Doc提供了 ParagraphFormat 类用于处理段落格式。您可以使用 Paragraph.getFormat() 方法获取 ParagraphFormat 类的对象,然后使用下面的方法设置对应的段落缩进: |缩进方式|方法|方法解释| |-|-|-| |左缩进|ParagraphFormat.setLeftIndent(float value)|根据设置的缩进量使段落从左边缩进| |右缩进|ParagraphFormat.setRightIndent(float value)|根据设置的缩进量使段落从右边缩进| |首行缩进|ParagraphFormat.setFirstLineIndent(float value)|将段落的第一行缩进| |悬挂缩进|ParagraphFormat.setFirstLineIndent(float negativeValue)|将段落的第一行置于页边空白处,然后缩进该段后面的每一行| ::: tip Spire.Doc中首行缩进和悬挂缩进用的是同一个方法,通过传入的参数值正负来决定是首行缩进还是悬挂缩进(正值:首行缩进;负值:悬挂缩进)。缩进值的单位是 磅 。 ::: ::: warning 在实际的使用过程中,如果对段落设置悬挂缩进时(即传入负值),需要同时设置段落左缩进,缩进值为悬挂缩进的正值。 :::
示例代码
public void indentParagraph() {
// 段落内容
String content = "山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。南阳诸葛庐,西蜀子云亭。孔子云:何陋之有?";
// 创建Document类的实例
Document document= new Document();
// 创建Section类的实例
Section section = document.addSection();
// 创建第一段,不设置段落缩进
Paragraph noStyleParagraph = section.addParagraph();
// 设置段落内容
setFontStyle(noStyleParagraph.appendText(content));
// 设置一个空段落
section.addParagraph();
// 创建第二段,设置左缩进
Paragraph leftIndentParagraph = section.addParagraph();
// 设置段落内容
setFontStyle(leftIndentParagraph.appendText(content));
// 设置左缩进
leftIndentParagraph.getFormat().setLeftIndent(20);
// 设置一个空段落
section.addParagraph();
// 创建第三段,设置右缩进
Paragraph rightIndentParagraph = section.addParagraph();
// 设置段落内容
setFontStyle(rightIndentParagraph.appendText(content));
// 设置右缩进
rightIndentParagraph.getFormat().setRightIndent(20);
// 设置一个空段落
section.addParagraph();
// 创建第四段,设置首行缩进
Paragraph firstLineIndentParagraph = section.addParagraph();
// 设置段落内容
setFontStyle(firstLineIndentParagraph.appendText(content));
// 设置首行缩进
firstLineIndentParagraph.getFormat().setFirstLineIndent(20);
// 设置一个空段落
section.addParagraph();
// 创建第五段,设置悬挂缩进
Paragraph hangIndentParagraph = section.addParagraph();
// 设置段落内容
setFontStyle(hangIndentParagraph.appendText(content));
// 设置悬挂缩进
hangIndentParagraph.getFormat().setFirstLineIndent(-20);
// 设置一个空段落
section.addParagraph();
// 创建第六段,设置悬挂缩进同时设置左缩进
Paragraph leftHangIndentParagraph = section.addParagraph();
// 设置段落内容
setFontStyle(leftHangIndentParagraph.appendText(content));
// 设置悬挂缩进和左缩进
leftHangIndentParagraph.getFormat().setFirstLineIndent(-20);
leftHangIndentParagraph.getFormat().setLeftIndent(20);
document.saveToFile("E:/test/IndentParagraph.docx", FileFormat.Docx_2013);
}
public void setFontStyle(TextRange tr) {
tr.getCharacterFormat().setFontName("宋体");
tr.getCharacterFormat().setFontSize(10);
}
输出结果
从输出结果可以看出,除了悬挂缩进之外的其他缩进设置和word中段落样式设置的结果是一致的。但是只设置悬挂缩进的时候,段落的第一行向左移,其他行的起始位置和无缩进段落的起始位置一致,如果在word中打开第五段的段落设置: 可以看到缩进样式中设置了左缩进-20磅,悬挂缩进20磅,意思是Spire.Doc在处理悬挂缩进时,会先将段落整体左移,然后再缩进除了第一行之外的其他行,从而实现悬挂缩进的效果,而这个样式和word中设置悬挂缩进的样式不一致,所以需要同时设置左缩进值对冲掉Spire.Doc设置的左缩进值,于是最后一段的结果是符合预期的。