Aspose word java 在当前word中有很多个下一页分节符,有页眉页脚,在保存之前更新了域,也更新了tableLayout,然后再统计word页面总数、每个节的页数,总是不对

当前使用aspose-java版本为22.1.0
在计算页码之前这些方法都调用了
mainDoc.updateTableLayout();
mainDoc.updatePageLayout();
mainDoc.updateFields();
我通过调用
mainDoc.getPageCount,或者
mainDoc.getBuiltInDocumentProperties().getPages()
或者我把word保存后再次打开计算页码,依然是这样的结果
都不对,尤其word页数越多,误差越大

@yangxiong0301 问题很可能是由于处理文档的机器上没有字体而导致的。要计算文档页数,需要构建文档布局。为此,字体是必不可少的。如果 Aspose.Words 找不到文档中使用的字体,则会使用替换字体。
https://docs.aspose.com/words/java/manipulate-and-substitute-truetype-fonts/

这可能会导致字体规格差异导致布局差异,从而导致 Aspose.Words 返回的页数不正确。您可以实现 IWarningCallback 函数,以便在执行字体替换时收到通知。
以下文章可能对您有所帮助:
https://docs.aspose.com/words/java/specify-truetype-fonts-location/
https://docs.aspose.com/words/java/install-truetype-fonts-on-linux/

如果问题仍然存在,请在此处附上有问题的输入文档以供参考。我们将进行检查并提供更多信息。

另外,请注意 Document.updateTableLayout 方法已被弃用,除非您确定会产生积极效果,否则不建议使用。

测试手册页码.docx (75.5 KB)

这里的文件获取整体页码不对,然后每个分节的话超过8页都不对

@yiranzhiyuan 感谢您提供的补充信息。很遗憾,我无法重现这个问题。Aspose.Words 返回 55 页,与 MS Word 相同。

我这里显示这个word是61页,而且每个分节的页数在这个表格中有显示,就拿最后一个举例,他在word中展示是9页,但是统计到是8页。
如果word中表格统计到的页码在您这里是对的,那么把您统计页数的代码展示出来,我本地做个测试

@yiranzhiyuan 您能否使用您这边的 MS Word 将文档保存为 PDF,并将输出的 PDF 附加到此处以供我们参考?

测试手册页码.pdf (515.8 KB)

这是word转为pdf的结果,我本地是win11+office professional Plus 2010

@yiranzhiyuan MS Word 2019 在我这边显示 55 页,与 Aspose.Words 相同:
ms.pdf (716.6 KB)

我咨询下,aspose版本和office版本有关系吗,如果有的话有对应表格吗

@yiranzhiyuan Aspose.Words 不需要 MS Word,也不依赖它。您这边文档的渲染可能取决于文档中缺少的字体。在这种情况下,MS Word 与 Aspose.Words 一样使用其他字体,这可能会导致布局差异。

但是我用IWarningCallback检测了字体,没有关于字体的警告

@yiranzhiyuan 我的意思是在 MS Word 中查看文档的环境中。

我这是win11环境,这些字体都有,或者说我怎么在本机查看时检测字体是否缺失

@yiranzhiyuan 您可以尝试安装所有语言的字体。正如您所见,您附加的 PDF 和我这边生成的 PDF 中使用的字体不同。所以这肯定是问题的根本原因。