0

任何人都可以帮助从 AFP 文件的“字体模式 (FNG)”字段中获取文本。是否有任何可用于此任务的库(最好是 Java)?

谢谢,

4

1 回答 1

0

你可以试试afplib。它有一些示例代码转储所有结构化字段 (org.afplib.samples.DumpAFP)。它产生如下输出:

...
FNG  number:47,offset:49787,id:13889161,length:8201,rawData:null,charset:null,PatData:[B@4e3958e7,
FNG  number:48,offset:57988,id:13889161,length:8201,rawData:null,charset:null,PatData:[B@77f80c04,
FNG  number:49,offset:66189,id:13889161,length:8201,rawData:null,charset:null,PatData:[B@1dac5ef,
FNG  number:50,offset:74390,id:13889161,length:6991,rawData:null,charset:null,PatData:[B@5c90e579,
EFN  number:51,offset:81381,id:13871497,length:17,rawData:null,charset:null,RSName:C0EX0480,

您可以使用二进制数组 PatData 来提取字体模式,如下所示:

    try (AfpInputStream in = new AfpInputStream(
        new BufferedInputStream(new FileInputStream(args[0])))) {

        SF sf;
        while((sf = in.readStructuredField()) != null) {
            if(sf instanceof FNG) {
                byte[] pattern = ((FNG)sf).getPatData();
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
于 2019-08-28T10:04:12.827 回答