How do I adjust the pages of annotations in a FDF file?


Before merging annotations in a FDF object into a PDF object, I want to adjust the pages that some annotations are on. How do I check the annotations type and possibly change the page?


The following code will get you started with this. Note that in a FDF document, the pages start at index zero, while for a PDFDoc the index is one.

//given FDFDoc fdfdoc instance
Obj fdfroot = fdfdoc.GetRoot();
Obj fdfdict = fdfroot.FindObj("FDF");
Obj annotsarray = fdfdict.FindObj("Annots");
if(annotsarray == null || !annotsarray.IsArray()) return;
int annots_sz = annotsarray.Size();
for(int i = 0; i < annots_sz; ++i)
Obj annotobj = annotsarray.GetAt(i);
Annot annot = new Annot(annotobj);
Annot.Type annotType = annot.GetType();
int page_index = annotobj.FindObj("Page").GetNumber();
// change the page number to page 10 for example
annotobj.PutNumber("Page", 9)' // zero indexed, so index 9 is the tenth page in the PDF