我想给wod增加目录及增加页码,页码是从正文开始


#1

如附件所示,我想给test.doc文档增加一个目录和页码,expect.doc是我的期望文档,expect1.png和expect2.png是参考图片help1.zip (99.7 KB)


#2

@liyong199466

请使用下面的代码示例获取所需的输出。 希望这对您有所帮助。

Document document = new Document(MyDir + "test1.doc");
DocumentBuilder builder = new DocumentBuilder(document);
builder.moveToSection(1);
builder.moveToHeaderFooter(HeaderFooterType.HEADER_PRIMARY);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.RIGHT);
builder.write("asdasd资产评估说明");

builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
builder.write("中联资产评估集团有限公司");

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.getPageSetup().setRestartPageNumbering(true);
section.getHeadersFooters().linkToPrevious(false);
builder.moveToSection(2);
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);
builder.write("中联资产评估集团有限公司");
builder.write("........................................");
builder.write("第 ");
builder.insertField("Page");
builder.write(" 页");
document.updateFields();
document.save(MyDir + "19.11.docx");

#3

你好按照你的要求,我确实可以生成一个目录,也能生成页码,但是我目录的页码跟实际正文的页码不符合,如附件所示,problem1.png和problem2.png是参考图片,test2.doc是测试文档,expect2.doc是期望文档help3.zip (85.9 KB)


#4

@liyong199466

共享的预期文档中TOC的页码与文档正文中的不匹配。 您可以ZIP并附加文档中用于测试的字体(FangSong_GB2312和SimSun)吗?


#5

不好意思,你可能曲解了我的意思,我的意思是说,按照你的提示,我确实可以生成目录和页码,但是目录上面的页码数和正文实际的页码数不相符合,就如附件中的problem1.png和problem2.png所示help3.zip (85.9 KB)


#6

@liyong199466

感谢您分享细节。 我们已经使用最新版本的Aspose.Words for Java 19.11测试了该方案,但未发现共享问题。 因此,请使用Aspose.Words for Java 19.11。 我们已附上屏幕截图,以供您参考。

此外,当我们在MS Word 2016中打开Expect2.doc并更新TOC字段时,它将更新TOC字段的页码。

请注意,InsertTableOfContents仅会插入一个TOC字段,而实际上不会建立目录。 当字段更新时,目录由Microsoft Word构建。

请注意,如果在该部分的开头重新开始页码,则PageSetup.RestartPageNumbering返回true。

如果其值设置为false,则RestartPageNumbering属性将覆盖PageStartingNumber属性,以便可以从上一节继续进行页码编号。