word转PDF时,字符间隔

使用的版本为24.1,在word转换成PDF时,出现部分段落中的字符间距被压缩了,有什么办法可以解决这样的变动

chat-test.docx (17.6 KB)

result.pdf (219.6 KB)

@LXY133 您在截图中提供的第一段中,使用最新 24.5 版 Aspose.Words 无法重现此问题。但第一页的末尾和第二页的末尾略有不同。

We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.

Issue ID(s): WORDSNET-27065

You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.

可以提供一下你这边的测试后的文件吗,我想看看有什么不同

@LXY133 这里有一份文件:
output.pdf (117.3 KB)

使用24.5版后,在window Server 2016版本下还是会出现上述的字符间隔压缩的情况

@LXY133 使用以下代码检查结果。另外,请注意字体替换警告,因为字体可能存在一些问题。

public void fonts() throws Exception {
    LoadOptions loadOptions = new LoadOptions();
    loadOptions.getLanguagePreferences().setDefaultEditingLanguage(EditingLanguage.CHINESE_PRC);
    Document doc = new Document("input.docx", loadOptions);
    
    doc.getLayoutOptions().setTextShaperFactory(HarfBuzzTextShaperFactory.getInstance());

    FontSubstitutionWarningCollector callback = new FontSubstitutionWarningCollector();
    doc.setWarningCallback(callback);

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

private static class FontSubstitutionWarningCollector implements IWarningCallback {
    ///
    /// Called every time a warning occurs during loading/saving.
    ///
    public void warning(WarningInfo info) {
        if (info.getWarningType() == WarningType.FONT_SUBSTITUTION)
            System.out.println(info.getDescription());
    }
}

请问这个类 HarfBuzzTextShaperFactory 是哪个依赖包?我这边直接报错了找不到这个类
图片.png (42.3 KB)

@LXY133

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>24.5</version>
    <classifier>shaping-harfbuzz-plugin</classifier>
</dependency>

这样配置后,包无法正常加载,包是配置在本地Maven的仓库的
图片.png (11.4 KB)

@LXY133 您是否只是在 Aspose.Words 项目中添加了 jar 文件?如果是,您可以从 Aspose Repository Browser /java/repo/com/aspose/aspose-words/24.5/ 下载 jar 文件。

我按执行了这段代码出现问题的电脑中,并没有提示相关字体的问题,但我查看了最终的文件结果,字体被替换了,但我看了word中字体原为“Times new Romal”,pdf被换为了MS UI gothic

public void fonts() throws Exception {
    LoadOptions loadOptions = new LoadOptions();
    loadOptions.getLanguagePreferences().setDefaultEditingLanguage(EditingLanguage.CHINESE_PRC);
    Document doc = new Document("input.docx", loadOptions);
    
    doc.getLayoutOptions().setTextShaperFactory(HarfBuzzTextShaperFactory.getInstance());

    FontSubstitutionWarningCollector callback = new FontSubstitutionWarningCollector();
    doc.setWarningCallback(callback);

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

private static class FontSubstitutionWarningCollector implements IWarningCallback {
    ///
    /// Called every time a warning occurs during loading/saving.
    ///
    public void warning(WarningInfo info) {
        if (info.getWarningType() == WarningType.FONT_SUBSTITUTION)
            System.out.println(info.getDescription());
    }
}

@LXY133 遗憾的是,我仍然无法使用 24.5 版 Aspose.Words 重现问题。这段代码是否会产生同样的问题:

LoadOptions loadOptions = new LoadOptions();
loadOptions.getLanguagePreferences().setDefaultEditingLanguage(EditingLanguage.CHINESE_PRC);
Document doc = new Document("input.docx", loadOptions);

doc.getLayoutOptions().setTextShaperFactory(HarfBuzzTextShaperFactory.getInstance());

doc.save("output.pdf");

当前是在window11系统中执行是正常的,但一旦换到window server系统中就出现字体被替换的问题

@LXY133 好的,感谢您提供的信息。我将使用 Window Server 2016 对其进行深入研究。

好的,如果有新的处理进展麻烦通知我一下

@LXY133 我安装了新的 Windows Server 2016,没有安装任何其他字体。但无法重现该问题。文件使用的是 Windows 默认安装的 SimSun 字体,没有安装任何其他字体。如果我禁用字体设置,字体替换就会显示警告,提示使用 Times New Roman 和 Calibri 字体,本文档中也使用了这两种字体。以下是我在 Windows Server 2016 上的输出结果。

output.pdf (119.2 KB)

我使用 Acrobat Reader 查看了结果。

好的,我试了重新安装系统中的字体后,其他文件出现的字体替换情况也没有出现了
未更新系统字体文件时,其他特殊字体的被替换的情况:
图片.png (10.5 KB)
更新系统字体文件时,正常转换保存后的显示
图片.png (5.4 KB)

@LXY133 很高兴知道问题已经解决。

我后续再留意一下是否还会出现当前的问题,谢谢了