你好,
我有个关于aspose.word的问题,请问当生成word的时候,往页面里不断写内容,如何可以知道页面已经写到下一页了?
我们使用的是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页脚中生成的页码不相同,这是我所想知道的原因
我这边点击toc然后update field会更新toc成正确的页码,但是在代码中在保存文档之前,我用 doc.updateFields();是不起作用的,toc的页码没有更新
@yiming28 您正在使用docValuation.updatePageLayout();
然后更新字段。您不需要调用此方法。当您首次将文档转换为PDF、XPS、图像或打印时,会自动调用此方法。但是,如果您在渲染后修改文档,然后尝试再次渲染,则“Aspose.Words”不会自动更新页面布局。在这种情况下,您应该在再次渲染之前调用“updatePageLayout”。
在您的情况下,请删除docValuation.updatePageLayout();
在更新字段之前。
我按照你的建议,删除docValuation.updatePageLayout(),但save的页码依然不正确