public static Dictionary<string, string> GetNamedDestination(PdfReader reader, bool fromNames)
{
IntHashtable pages = new IntHashtable();
int numPages = reader.NumberOfPages;
for (int k = 1; k <= numPages; ++k)
pages[reader.GetPageOrigRef(k).Number] = k;
Dictionary<string,PdfObject> names = fromNames ? reader.GetNamedDestinationFromNames() : reader.GetNamedDestinationFromStrings();
Dictionary<string,string> n2 = new Dictionary<string,string>(names.Count);
String[] keys = new String[names.Count];
names.Keys.CopyTo(keys, 0);
foreach (String name in keys) {
PdfArray arr = (PdfArray)names[name];
StringBuilder s = new StringBuilder();
try {
s.Append(pages[(arr.GetAsIndirectObject(0)).Number]);
s.Append(' ').Append(arr[1].ToString().Substring(1));
for (int k = 2; k < arr.Size; ++k)
s.Append(' ').Append(arr[k].ToString());
n2[name] = s.ToString();
}
catch {
}
}
return n2;
}