用的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.目前最新的版本是多少
我们本地开发环境: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()
谢谢,你这种转换可以,现在页码显示正常了