Word翻页问题

你好,
我有个关于aspose.word的问题,请问当生成word的时候,往页面里不断写内容,如何可以知道页面已经写到下一页了?

@yiming28

请问您能否提供更多关于您使用的代码或方法的信息,以便我们更好地理解您的问题?

我们使用的是java11,aspose的版本是最新的版本

@yiming28 您可以获取文档中的最后一段,并使用LayoutCollector进行检查。这里有一个简单的例子:

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.writeln("Default text");

Node currentParagraph = builder.getCurrentParagraph();

LayoutCollector lc = new LayoutCollector(doc);
while (lc.getStartPageIndex(currentParagraph) < 2) {
    builder.writeln("Add new text");
    // 更新布局和收集器数据。
    lc.clear();
    doc.updatePageLayout();
    
    currentParagraph = builder.getCurrentParagraph();
}

doc.save("output.docx");

附件这是我aspose生成的一个word文档,里面的TOC是aspose自动生成的,最后两页CERTIFICATION和
SPECIALIST BIOGRAPHIES页码应该是第八和第九页,为什么生成的TOC里面的页码是第九和第十页?两个页码为什么不一致
ValuationDocument.docx (66.6 KB)

@yiming28 使用安装的“BentonSans Regular”字体,本文档包含11页(在MS Word 2019中),其中“CERTIFICATION”-10页,“SPECIALIST BIOGRAPHIES”-11页。

在TOC中的CERTIFICATION和SPECIALIST BIOGRAPHIES生成的页码和CERTIFICATION和SPECIALIST BIOGRAPHIES页脚中生成的页码不相同,这是我所想知道的原因

@yiming28 TOC和我这边的内容有相同的页面。在保存文档之前,请尝试更新字段。

我这边点击toc然后update field会更新toc成正确的页码,但是在代码中在保存文档之前,我用 doc.updateFields();是不起作用的,toc的页码没有更新


在截图中你可以看到在TOC中的页码和页脚的页码是不同的

@yiming28 您能提供创建此文档所用的完整代码吗?如果我打开您提供的文档并更新字段,toc页码将正确更新。

这是完整代码
Test.java.zip (5.8 KB)

@yiming28 您正在使用docValuation.updatePageLayout();然后更新字段。您不需要调用此方法。当您首次将文档转换为PDF、XPS、图像或打印时,会自动调用此方法。但是,如果您在渲染后修改文档,然后尝试再次渲染,则“Aspose.Words”不会自动更新页面布局。在这种情况下,您应该在再次渲染之前调用“updatePageLayout”。

在您的情况下,请删除docValuation.updatePageLayout();在更新字段之前。

我按照你的建议,删除docValuation.updatePageLayout(),但save的页码依然不正确

@yiming28 不幸的是,我仍然无法重现这个问题。请问您使用的是什么版本的“Aspose.Words”和“MS Word”?不太清楚为什么在我这边这份文件有11页,而在你这边只有8页。