如何在C#或Java中获取AFP文件的页数

时间:2019-01-10 14:55:46

标签: afp

我有一个AFP文件,我需要使用c#获取文件中存在页面的数量。基于文件数量,我必须为AFP文件创建打印队列,因此可以使用c#或java吗? 。我没有找到任何支持代码来获取互联网计数。

1 个答案:

答案 0 :(得分:0)

afplib有一些示例代码可以做到这一点。基本上,您需要遍历AFP中的所有结构化字段并计算BPG(开始页)的数量。此摘录摘自here

try (AfpInputStream in = new AfpInputStream(
                new BufferedInputStream(new FileInputStream(s)))) {

            int pages = 0;
            int resources = 0;

            SF sf;
            while((sf = in.readStructuredField()) != null) {
                log.trace("{}", sf);

                switch(sf.getId()) {
                case SFName.BPG_VALUE:
                    pages++;
                    if(progress && pages % 1000 == 0)
                        System.out.print(String.format("\r%06d %04d %s", pages, resources, s));
                    break;
                case SFName.BRS_VALUE:
                    resources++;
                    if(progress && resources % 1000 == 0)
                        System.out.print(String.format("\r%06d %04d %s", pages, resources, s));
                    break;
                }
            }

            if(progress)
                System.out.print("\r");
            System.out.println(String.format("%06d %04d %s", pages, resources, s));

        } catch (Exception e) {
        }