如何使用itext7从PDF中提取附加文件

时间:2016-06-13 16:49:29

标签: java pdf itext

如何使用itext7从PDF中提取附加文件?

我为itext5找到的示例代码都不再起作用了。

每个文件byte[]将是我需要的,如下面的itext5示例所示:

    PdfReader reader = new PdfReader(SRC);
    Map<String, byte[]> files = new HashMap<String,byte[]>();
    PdfObject obj;

    for (int i = 1; i <= reader.getXrefSize(); i++) {
        obj = reader.getPdfObject(i);
        if (obj != null && obj.isStream()) {
            PRStream stream = (PRStream)obj;
            byte[] b;
            try {
                b = PdfReader.getStreamBytes(stream);
            }
            catch(UnsupportedPdfException e) {
                b = PdfReader.getStreamBytesRaw(stream);
            }
            files.put(Integer.toString(i), b);
        }
    }

Thx / markus

1 个答案:

答案 0 :(得分:1)

您正在使用暴力搜索附件,而不是通过查询目录中的嵌入文件和查询页面词典以获取附件注释。

无论如何,如果我将您的代码移植到iText 7,它将如下所示:

BLOCKA
BLOCKB
-CLASSB1
--CLASSB12
-CLASSSB13
--CLASSB4
--CLASSB5

我做的唯一更改是将流写入文件。