protected void ReadOCProperties()
{
if (documentOCG.Count != 0) {
return;
}
PdfDictionary dict = reader.Catalog.GetAsDict(PdfName.OCPROPERTIES);
if (dict == null) {
return;
}
PdfArray ocgs = dict.GetAsArray(PdfName.OCGS);
PdfIndirectReference refi;
PdfLayer layer;
Dictionary<string,PdfLayer> ocgmap = new Dictionary<string,PdfLayer>();
for (ListIterator<PdfObject> i = ocgs.GetListIterator(); i.HasNext();) {
refi = (PdfIndirectReference)i.Next();
layer = new PdfLayer(null);
layer.Ref = refi;
layer.OnPanel = false;
layer.Merge((PdfDictionary)PdfReader.GetPdfObject(refi));
ocgmap[refi.ToString()] = layer;
}
PdfDictionary d = dict.GetAsDict(PdfName.D);
PdfArray off = d.GetAsArray(PdfName.OFF);
if (off != null) {
for (ListIterator<PdfObject> i = off.GetListIterator(); i.HasNext(); ) {
refi = (PdfIndirectReference)i.Next();
layer = ocgmap[refi.ToString()];
layer.On = false;
}
}
PdfArray order = d.GetAsArray(PdfName.ORDER);
if (order != null) {
AddOrder(null, order, ocgmap);
}
foreach (PdfLayer o in ocgmap.Values)
documentOCG[o] = null;
OCGRadioGroup = d.GetAsArray(PdfName.RBGROUPS);
if (OCGRadioGroup == null)
OCGRadioGroup = new PdfArray();
OCGLocked = d.GetAsArray(PdfName.LOCKED);
if (OCGLocked == null)
OCGLocked = new PdfArray();
}