ouchli
1
原始文档:
cshi .docx (28.4 KB)
代码:
Document document = new Document("D:\\Users\\Desktop\\cshi .docx");
for (Section section : document.getSections())
{
PageSetup pageSetup = section.getPageSetup();
pageSetup.setHeaderDistance(42.55);
pageSetup.setFooterDistance(49.6);
pageSetup.setTopMargin(72.0);
pageSetup.setBottomMargin(72.0);
pageSetup.setLeftMargin(89.85);
pageSetup.setRightMargin(89.85);
}
Paragraph firstParagraph = document.getFirstSection().getBody().getFirstParagraph();
DocumentBuilder builder = new DocumentBuilder(document);
builder.moveTo(firstParagraph);
builder.insertTableOfContents("TOC \\o\"1-3\"\\h \\z \\u");
document.updateFields();
document.save("D:\\Users\\实例文档\\aa.docx");
最后生成的文档:
aa.docx (25.3 KB)
为什么布局跑出右边界外了呢?
@ouchli 在您的代码中,您更新了页面设置,但没有更新目录样式。需要在目录样式中调整标签位置。请参阅以下代码:
Document doc = new Document("C:\\Temp\\in.docx");
for (Section section : doc.getSections())
{
PageSetup pageSetup = section.getPageSetup();
pageSetup.setHeaderDistance(42.55);
pageSetup.setFooterDistance(49.6);
pageSetup.setTopMargin(72.0);
pageSetup.setBottomMargin(72.0);
pageSetup.setLeftMargin(89.85);
pageSetup.setRightMargin(89.85);
}
// update tab position in the TOC1 style
PageSetup ps = doc.getFirstSection().getPageSetup();
Style toc1 = doc.getStyles().getByStyleIdentifier(StyleIdentifier.TOC_1);
toc1.getParagraphFormat().getTabStops().clear();
toc1.getParagraphFormat().getTabStops().add(ps.getPageWidth() - ps.getLeftMargin() - ps.getRightMargin(), TabAlignment.RIGHT, TabLeader.DOTS);
Paragraph firstParagraph = doc.getFirstSection().getBody().getFirstParagraph();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.moveTo(firstParagraph);
builder.insertTableOfContents("TOC \\o\"1-3\"\\h \\z \\u");
doc.updateFields();
doc.save("C:\\Temp\\out.docx");
out.docx (25.3 KB)
ouchli
3
请问 StyleIdentifier.TOC_1 TOC_2 TOC_3 。。。
有什么区别呢?
@ouchli TOC_1 ... TOC_9
样式定义了不同级别的目录格式。您的情况只有一个级别,因此在代码示例中,只有 TOC_1
样式被修改。