我想给一个文档插入目录,并且给目录设置一定的样式,如附件所示,test.doc是我测试文档,expect.doc是我的期望文档,test.png是测试图片,expect.png是我的期望图片,请参照help.zip (82.8 KB)
在您的情况下,您需要将光标移动到所需的位置并插入目录。 请使用下面的代码示例来满足您的要求。
Document document = new Document(MyDir + "test.doc");
DocumentBuilder builder = new DocumentBuilder(document);
builder.moveToSection(1);
builder.writeln("目 录");
builder.getParagraphFormat().clearFormatting();
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.insertTableOfContents("\\o \"1-3\" \\t \\h \\u");
builder.insertBreak(BreakType.PAGE_BREAK);
builder.getParagraphFormat().clearFormatting();
document.updateFields();
document.save(MyDir + "19.11.docx");
谢谢你的回复,按照你的代码演示,我的确可以生成一个目录,但是生成的目录是有问题的,我页脚的页码的第一页是从目录页开始的,但是我不希望这样,我希望我的页脚的页码是从正文页开始的,如附件所示,problem1.png,problem2.png是我的问题图片,expect1.png和expect2.png都是我的期望图片,请参照。help.zip (123.5 KB)
对于您的情况,我们建议您遵循以下解决方案。
- 在插入目录后,请插入分节符(新页)而不是分页符。 这将在您的文档中创建新的部分。
- 克隆页脚的内容并将其插入新部分。
- 从第二节的页脚中删除所需的内容(页面字段)。
希望这对您有所帮助。
你好,有没有具体的代码体现
请检查以下代码示例。 希望这对您有所帮助。
Document document = new Document(MyDir + "test.doc");
DocumentBuilder builder = new DocumentBuilder(document);
builder.moveToSection(1);
builder.writeln("目 录");
builder.getCurrentSection().getBody().getFirstParagraph().getParagraphFormat().setStyleName("Normal");
builder.insertTableOfContents("\\o \"1-3\" \\t \\h \\u");
builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);
builder.insertParagraph();
Section section = (Section)builder.getCurrentSection();
section.getHeadersFooters().linkToPrevious(false);
CopyHeaderFooter((Section)section.getPreviousSibling(), section, HeaderFooterType.FOOTER_PRIMARY);
document.updateFields();
document.save(MyDir + "19.11.docx");
public static void CopyHeaderFooter(Section src, Section dst, int headerType) throws Exception
{
HeaderFooter header = dst.getHeadersFooters().getByHeaderFooterType(headerType);
if (header == null)
{
// There is no header of the specified type in the current section, create it.
header = new HeaderFooter((Document)dst.getDocument(), headerType);
dst.getHeadersFooters().add(header);
}
for (Node srcNode : (Iterable<Node>)src.getHeadersFooters().getByHeaderFooterType(headerType).getChildNodes())
{
Node dstNode = src.getDocument().importNode(srcNode, true, ImportFormatMode.KEEP_SOURCE_FORMATTING);
header.appendChild(dstNode);
}
}