有什么办法可以摆脱对操作系统字体的依赖吗?

我在本地电脑上测试office文件转换为pdf,发现很多地方和微软的格式差异较大,有的地方是乱码,怀疑可能是和字体有关系,所以想问有什么办法可以摆脱对操作系统字体的影响,或者干脆安装全部的字体,或者直接在应用系统中自带字体,可以实现文件展示和微软格式一致。

@yangfanchuhai, Aspose.Words 用类似的字体替换缺失的字体。 通常在字体替换后,文档布局看起来会有所不同。 发生这种情况是因为不同字体的字符宽度和高度通常不同。

您可以运行以下代码来查看所有字体替换警告:

Document doc = new Document("in.docx");

HandleDocumentWarnings warningsHandler = new HandleDocumentWarnings();
doc.setWarningCallback(warningsHandler);

doc.save("out.pdf");

warningsHandler.printMissingFontDetails();


public static class HandleDocumentWarnings implements IWarningCallback {
    public ArrayList listOfFonts = new ArrayList();

    public void warning(WarningInfo info) {
        if (info.getWarningType() == WarningType.FONT_SUBSTITUTION) {
            if (!listOfFonts.contains(info.getDescription()))
                listOfFonts.add(info.getDescription());
        }
    }

    public void printMissingFontDetails() {
        for (int i = 0; i < listOfFonts.size(); i++)
            System.out.println(listOfFonts.get(i).toString());
    }
}

另外,您可以从其他计算机复制缺少的字体,并使 Aspose.Words 使用这些字体。 请阅读我们的文档如何指定字体位置: