Aspose words for java将html转成pdf设置自定义字体有时不生效

你好,我在将html转换成pdf的时候,设置了自定义字体目录,但是发现有些用户生效,有些用户电脑并不生效,这是为何?FontSettings.getDefaultInstance().setFontsFolder("D://fonts/zh”, false);

@yyl5201314, 请在出现字体问题的计算机上运行以下代码,查看是否打印任何字体替换警告。 字体替换警告意味着仍然缺少一些字体。

FontSettings.getDefaultInstance().setFontsFolder("D://fonts/zh", false);

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

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());
    }
}

你好,我运行了以后打印这些告警:Font ‘Times New Roman’ has not been found. Using ‘FZLanTingHeiS-R-GB’ font instead. Reason: first available font.
Font ‘Symbol’ has not been found. Using ‘FZLanTingHeiS-R-GB’ font instead. Reason: first available font.但是我查看了我的计算机是安装了Times New Roman字体的,请问是怎么回事呢?

@yyl5201314, 这意味着该文档使用 Times New Roman 和 Symbol 字体,但 Aspose.Words 找不到这些字体。
调用 FontSettings.getDefaultInstance().setFontsFolder(“D://fonts/zh”, false) 后,Aspose.Words 开始查找 D:\fonts\zh 文件夹中的所有字体。 该文件夹很可能不包含 Times New Roman 和 Symbol,这就是 Aspose.Words 用该文件夹中可用的字体替换它们的原因。

您有 2 个选项来修复它:

  1. 将 Times New Roman 和 Symbol 字体复制到 D:\fonts\zh 文件夹
  2. 使用系统中安装的Times New Roman 和Symbol(在C:\Windows\Fonts 文件夹中)。 在这种情况下,您可以将系统字体和 D:/fonts/zh 文件夹中的字体结合起来:
FontSettings.getDefaultInstance().setFontsSources(
		new FontSourceBase[] { 
                    new SystemFontSource(), 
                    new FolderFontSource("D:\\fonts\\zh", true) 
               }
);

您可以在我们的文档中阅读有关如何指定不同字体源的更多信息:
https://docs.aspose.com/words/java/specify-truetype-fonts-location/#loading-fonts-from-system