How can I get file attachments that are present in any existing PDF files?

97 views
Skip to first unread message

Support

unread,
Nov 21, 2006, 5:20:09 PM11/21/06
to PDFTron PDFNet SDK
Q: How can I get the attachment collection already present in any
existing pdf file and access individual attachments

---
A:

The file attachment annotations can be accessed via Annot class
interface (see Annotation sample project for more info).

File attachments that are not associated with any document can be
accessed by searching document object index. For example:

Doc cos_doc = doc.GetSDFDoc();
int num_objs = cos_doc.XRefSize();
for (int i=1; i<num_objs; ++i) {
Obj obj = cos_doc.GetObj(i);
if (obj!=null && !obj.IsFree()&& obj.IsDict()) {
// Process only Filespec objects
DictIterator itr = obj.Find("Type");
if (itr == obj.DictEnd() || itr.Value().GetName() != "Filespec")
continue;

// .. Process obj Filespec low level object
Filespec fs = new Filespec(obj);
...
}
}

Alternatively you can also traverse all FileSpec listed under
"EmbeddedFiles" name tree. Somethiong along the following lines:

SDF.NameTree names = SDF.NameTree.Find(doc, "EmbeddedFiles");
if(!names.IsValid()) return;

// Traversing the NameTree
NameTreeIterator end = names.End();
NameTreeIterator i = names.Begin();
for (; i!=end; ++i) {
Obj spec = i->Value();
Filespec fs = new Filespec(spec);
...
}

Reply all
Reply to author
Forward
0 new messages