当前使用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 方法已被弃用,除非您确定会产生积极效果,否则不建议使用。
我这里显示这个word是61页,而且每个分节的页数在这个表格中有显示,就拿最后一个举例,他在word中展示是9页,但是统计到是8页。
如果word中表格统计到的页码在您这里是对的,那么把您统计页数的代码展示出来,我本地做个测试
我咨询下,aspose版本和office版本有关系吗,如果有的话有对应表格吗
@yiranzhiyuan Aspose.Words 不需要 MS Word,也不依赖它。您这边文档的渲染可能取决于文档中缺少的字体。在这种情况下,MS Word 与 Aspose.Words 一样使用其他字体,这可能会导致布局差异。
但是我用IWarningCallback检测了字体,没有关于字体的警告
我这是win11环境,这些字体都有,或者说我怎么在本机查看时检测字体是否缺失