public String GetJavaScript(RandomAccessFileOrArray file) {
PdfDictionary names = (PdfDictionary)GetPdfObjectRelease(catalog.Get(PdfName.NAMES));
if (names == null)
return null;
PdfDictionary js = (PdfDictionary)GetPdfObjectRelease(names.Get(PdfName.JAVASCRIPT));
if (js == null)
return null;
Hashtable jscript = PdfNameTree.ReadTree(js);
String[] sortedNames = new String[jscript.Count];
jscript.Keys.CopyTo(sortedNames, 0);
Array.Sort(sortedNames);
StringBuilder buf = new StringBuilder();
for (int k = 0; k < sortedNames.Length; ++k) {
PdfDictionary j = (PdfDictionary)GetPdfObjectRelease((PdfIndirectReference)jscript[sortedNames[k]]);
if (j == null)
continue;
PdfObject obj = GetPdfObjectRelease(j.Get(PdfName.JS));
if (obj != null) {
if (obj.IsString())
buf.Append(((PdfString)obj).ToUnicodeString()).Append('\n');
else if (obj.IsStream()) {
byte[] bytes = GetStreamBytes((PRStream)obj, file);
if (bytes.Length >= 2 && bytes[0] == (byte)254 && bytes[1] == (byte)255)
buf.Append(PdfEncodings.ConvertToString(bytes, PdfObject.TEXT_UNICODE));
else
buf.Append(PdfEncodings.ConvertToString(bytes, PdfObject.TEXT_PDFDOCENCODING));
buf.Append('\n');
}
}
}
return buf.ToString();
}