Aspose.word for android 关于txt转pdf 中文乱码问题

@aaron0309 我已经检查了我这边的代码。我不知道你那边发生了什么,但我在调试时发现,你总是使用 “File.getParentFile()”,它总是返回存在的文件夹,因此其他代码没有执行。我想这就是为什么字体没有被复制到设备文件夹的原因。有了下面的代码,我就能将字体复制到设备上,并得到正确的结果。

String rootDirFonts = getFontsFilePath();
File ttfFile = new File(rootDirFonts, "/simsun.ttc");
if (!ttfFile.exists()) {
    try {
        AssetManager assetManager = getAssets();
        try (InputStream in = assetManager.open("simsun.ttc")) {
            try (OutputStream out = new FileOutputStream(ttfFile)) {
                copyFile(in, out);
            }
        }
        //将assets 字体添加到项目私有文件夹中
        //StorageUtil.saveInputStreamToFolder(in, rootDirFonts + "/simsunb.ttf");
    } catch (Exception e) {
        Log.e(TAG, "Failed to set", e);
    }
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
    byte[] buffer = new byte[1024];
    int read;
    while ((read = in.read(buffer)) != -1) {
        out.write(buffer, 0, read);
    }
}

protected String getFontsFilePath() {
    String appFilePath = getFilesDir().getAbsolutePath() + "/MyFonts";

    //通过 文件路径出啊年文件对象
    File file = new File(appFilePath);
    //判断父文件是否存在,如果不存在就创建一个新文件
    if (!file.exists()) {
        file.mkdirs();
    }
    return appFilePath;
}

感谢,已经成功转换了。请问下如果我有大量字体需要适配的话,请问下有什么好的方案处理字体文件呢?

@aaron0309 您可以远程存储字体,并将其作为 StreamFontSource 加载。例如,您可以使用 StreamFontSource 来处理存储在 S3 中的字体,如此处所述:

该示例使用的是 C# 语言,但其主要思想与 Java 语言相同。同样的方法也可用于其他外部来源的字体。

此外,在使用外部字体源时,缓存字体搜索信息也很有用。有关详细信息,请参阅以下文章: