private static IList<AttachmentFile> extractFileAttachmentAnnotations(PdfReader reader)
{
var results = new List<AttachmentFile>();
var numberOfPages = reader.NumberOfPages;
for (int pageNumber = 1; pageNumber <= numberOfPages; ++pageNumber)
{
var annots = PdfReader.GetPdfObject(reader.GetPageN(pageNumber).Get(PdfName.ANNOTS)) as PdfArray;
if (annots == null)
continue;
foreach (var item in annots)
{
var annot = PdfReader.GetPdfObject(item) as PdfDictionary;
if (annot == null)
continue;
var subType = PdfReader.GetPdfObject(annot.Get(PdfName.SUBTYPE)) as PdfName;
if (!PdfName.FILEATTACHMENT.Equals(subType))
continue;
var filespec = PdfReader.GetPdfObject(annot.Get(PdfName.FS)) as PdfDictionary;
var file = extractFile(filespec);
if (file == null)
continue;
results.Add(file);
}
}
return results;
}