保存文件之后文档目录页码不对

样例文件.docx (860.3 KB)

目录中第九章显示页码是56,但是实际是在第55页,且最后两个目录虚线和文字显示错误。
我将文件保存为pdf之后目录页码正常,发现第55和第56页之间有一个空白页。
说明:文档中不缺少任何字体,表格都禁用了跨页断行,但依旧是这种情况。
我使用的aspose-words for java版本是24.2,保存文件的代码如下:

    public void saveFile(String outputPath, int saveFormat) throws Exception {
        SaveOptions options = SaveOptions.createSaveOptions(saveFormat);
        this.updatePageLayout();
        this.updateFields();
        File newFile = FileUtils.getFile(outputPath);
        FileOutputStream fos = null;
        try{
            fos = FileUtils.openOutputStream(newFile);
            this.save(fos,options);
            fos.flush();
        }finally {
            IOUtils.closeQuietly(fos);
        }
    }

我用office打开这个文档,页码正常,55页是出现一个空白页,但是使用wps打开,两者在表格末尾暂时展示有差异,应该是这个原因导致多出一页:
office效果
企业微信截图_17731248563678.png (23.0 KB)

wps效果
企业微信截图_17731248913954.png (22.2 KB)

我想我解决了这个问题,表格末尾如果有个特殊的’\f’换页符,如果换页符刚好位于页面末尾,office中会多产生一个空白页,wps展示会忽略这个空白页:

@lang.zhou 您文档中使用的以下字体在我的设备上不可用:

  • ‘仿宋_GB2312’
  • ‘方正小标宋简体’
  • ‘楷体_GB2312’

请您将它们附在这里以便测试吗?

很可能该问题是由于文档中使用的字体在将文档渲染为 PDF 的环境中不可用而导致的。如果 Aspose.Words 无法找到文档中使用的字体,则会进行字体替换。这可能会由于字体度量信息的差异而导致版式上的差异。您可以实现 IWarningCallback 来在发生字体替换时获得通知。
以下文章可能对您有帮助:
https://docs.aspose.com/words/java/specify-truetype-fonts-location/
https://docs.aspose.com/words/java/install-truetype-fonts-on-linux/

我这边有实现IWarningCallback,并且没有打印字体缺失,这个是字体文件
fonts.zip (6.5 MB)

@lang.zhou 感谢您提供的更多信息。我这边使用最新版 Aspose.Words for Java 26.2 无法重现此问题。以下是我这边使用 Aspose.Words 和 MS Word 生成的 PDF 文档。
MS Word: ms.pdf (1.7 MB)
Aspose.Words: out.pdf (1.1 MB)