源于字体源文件夹设置问题

FontSettings.getDefaultInstance().setFontsSources(new FontSourceBase[]
{
    new SystemFontSource(),
    new FolderFontSource(Test.class.getClassLoader().getResource("fonts").getPath(), true)
});

我使用以上代码设置字体源,在编辑器中测试正常,但是打成jar包放到服务器上会发现我设置的字体源文件夹无效

图片是我的字体目录

@yangcl107 您正在尝试从 JAR 或项目加载字体。 FolderFontSource 需要字体文件夹的绝对路径,并且不支持从 JAR 加载。 不幸的是,Aspose.Words 不读取打包到 JAR 或 WAR 中的字体。 因此,在您的情况下,您应该将字体复制到操作系统文件系统中,或者使用 StreamFontSourceMemoryFontSource 从 JAR 文件中获取字体并将其提供给 Aspose.Words。

谢谢,我尝试使用了 StreamFontSource,以下是我的代码,但似乎没有起效果,麻烦帮我看下哪里有问题

public static List<FileInputStream> loadFonts() {
        List<FileInputStream> fontStreams = new ArrayList<>();

        // 获取ClassLoader
        ClassLoader classLoader = Test.class.getClassLoader();

        // 获取resources/fonts目录下的所有文件
        File fontsDirectory = new File(Objects.requireNonNull(classLoader.getResource("fonts")).getFile());
        if (fontsDirectory.isDirectory()) {
            File[] fontFiles = fontsDirectory.listFiles();
            if (fontFiles != null) {
                for (File fontFile : fontFiles) {
                    try {
                        FileInputStream fontStream = new FileInputStream(fontFile);
                        fontStreams.add(fontStream);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

        return fontStreams;
    }
        List<FontSourceBase> bases = new ArrayList<>();
        loadFonts().forEach(a->{
            FontSourceBase fontSource = new StreamFontSource() {
                @Override
                public InputStream openFontDataStream() throws Exception {
                    return a;
                }
            };
            bases.add(fontSource);
        });
        FontSettings fontSettings = new FontSettings();
        fontSettings.setFontsSources(bases.toArray(new FontSourceBase[0]));

@yangcl107 你有什么问题?是异常还是其他问题?如果可能的话,创建一个简单的应用程序来重现问题。

不是异常,看起来是没有设置成功,我设置字体是为了解决lunix下生成目录页码不对的问题。我将字体放在linux文件夹下,代码指定绝对路径时页码没问题,我用上述StreamFontSource时页码还是出现了问题,

@yangcl107 通常,classLoader.getResource 会询问字体名称,但不会询问字体文件夹。您在此处的结果正确吗?尝试只加载一种所需的字体,然后用页码检查结果。