Aspose19.10如何通过stream形式导入自定义字体

按照官网的例子,报错StreamFontSource类是抽象类,其中还有几个抽象方法,无法实现,目前只能将项目包名改为一样才能实现,但是还有问题,请问该如何处理

@maochen

要通过流的形式导入自定义字体,您需要实现 StreamFontSource 类,并重写 OpenFontDataStream 方法,以返回包含字体数据的流。以下是一个示例代码,展示了如何实现这一过程:

import com.aspose.words.*;

import java.io.InputStream;

public class CustomFontSource extends StreamFontSource {
    @Override
    public InputStream openFontDataStream() {
        // 返回包含字体数据的输入流
        return getClass().getResourceAsStream("/path/to/your/font.ttf");
    }
}

// 使用自定义字体源
public class FontExample {
    public static void main(String[] args) throws Exception {
        Document doc = new Document("input.docx");
        
        FontSettings fontSettings = new FontSettings();
        fontSettings.setFontsSources(new FontSourceBase[] { new CustomFontSource() });
        
        doc.setFontSettings(fontSettings);
        doc.save("output.pdf");
    }
}

在这个示例中,您需要将 "/path/to/your/font.ttf" 替换为实际字体文件的路径。确保字体文件在您的项目资源中可用。

请注意,StreamFontSource 是一个抽象类,因此您必须实现其所有抽象方法。通过这种方式,您可以在 Aspose.Words 中使用自定义字体,而无需将字体文件直接加载到内存中。

如果您在实现过程中遇到任何问题,请确保检查 Aspose.Words 的文档,以获取更多关于字体设置和流的详细信息。

是不是版本太低,抽象方法都无法实现

@maochen 该问题已在 Aspose.Words 20.12.0 版本中得到解决。因此我建议您更新到较新的版本。

好的,谢谢。。我们当前付费版本就是19.10,请问是否有啥替代方案

@maochen 除了升级版本,恐怕没有其他解决办法。