Aspose.word获取word文档的总页数和实际不符

用的aspose.word 版本是23.12 ,用该方法获取的总页数是3,但是实际文档总页数是2,代码如下:
Document doc = new Document(“path_to_your_document.docx”);
int pages = document.getPageCount();
投标函.docx (16.6 KB)

@zchong 很遗憾,我这边使用最新版本的 Aspose.Words 无法重现该问题。请尝试更新到最新版本,如果问题仍然存在,请告知我们。

此外,您的问题可能是由于输入文档中使用的字体在处理文档的机器上不可用。这些字体是构建文档布局和计算页数所必需的。如果 Aspose.Words 无法找到文档中使用的字体,则会使用替代字体。这可能会导致字体不匹配和文档布局因不同的字体指标而产生差异,从而导致页数不正确。您可以实现 IWarningCallback,以便在执行字体替换时获取通知。
请参阅我们的文档,了解 Aspose.Words 在何处查找字体:

您可以执行以下代码来获取任何字体问题。

@Test
public void test() throws Exception {
    Document doc = new Document("count.docx");
    doc.setWarningCallback(new DocumentSubstitutionWarnings());

    doc.save("output.pdf");
}

public class DocumentSubstitutionWarnings implements IWarningCallback {
    public void warning(WarningInfo info)
    {
        // We are only interested in fonts being substituted.
        if (info.getWarningType() == WarningType.FONT_SUBSTITUTION) {
            System.out.println(info);
        }
    }
}

1.能否用我给你的版本试一下,我这是必现的
2.目前最新的版本是多少

@zchong 舒尔,我已经用 23.12 版检查过了,我这边是 2 页,和预期的一样。目前的最新版本是 24.4。

微信截图_20240521164009.jpg (94.1 KB)

我们这确实是识别出来3页,请查看测试截图,你们那边没问题,我们这边确有问题,该如何解析该现象,如何处理,麻烦给一下解决方案谢谢!

@zchong 能否分享一下你们使用的环境?是 windows 还是 linux?在 MS Word 中打开文档时,文档中显示的字体是什么?我使用的是 SimSun 字体,用于显示文档中的文本。

我们本地开发环境:windows操作系统,jkd1.8
测试环境:linux操作系统 jdk1.8

两个环境都有问题,测试发现把这个word文档手动升级到最新版本,也就是点击图中的红框部分升级一下,再获取页码就显示正常了,怀疑是对老的word文档兼容性不好,针对此现象该如何解决,辛苦给个方案
企业微信截图_17162775417467(1).png (38.5 KB)

@zchong 我仍然没有机会重现这个问题。你可以试试下面的代码吗?

LoadOptions options = new LoadOptions();
options.getLanguagePreferences().setDefaultEditingLanguage(EditingLanguage.CHINESE_PRC);
Document doc = new Document("input.docx", options);
doc.getCompatibilityOptions().optimizeFor(MsWordVersion.WORD_2019);
int count = doc.getPageCount()

谢谢,你这种转换可以,现在页码显示正常了