private int RemoveKidObject(PdfObject kid) { PdfObject k = GetK(); if (k == null || !k.IsArray() && k != kid && k != kid.GetIndirectReference()) { return(-1); } int removedIndex = -1; if (k.IsArray()) { PdfArray kidsArray = (PdfArray)k; removedIndex = RemoveObjectFromArray(kidsArray, kid); } if (!k.IsArray() || k.IsArray() && ((PdfArray)k).IsEmpty()) { GetPdfObject().Remove(PdfName.K); removedIndex = 0; } SetModified(); return(removedIndex); }
/// <summary>Reads the layers from the document to be able to modify them in the future.</summary> private void ReadLayersFromDictionary() { PdfArray ocgs = GetPdfObject().GetAsArray(PdfName.OCGs); if (ocgs == null || ocgs.IsEmpty()) { return; } IDictionary <PdfIndirectReference, PdfLayer> layerMap = new SortedDictionary <PdfIndirectReference, PdfLayer >(); for (int ind = 0; ind < ocgs.Size(); ind++) { PdfLayer currentLayer = new PdfLayer((PdfDictionary)ocgs.GetAsDictionary(ind).MakeIndirect(GetDocument())); // We will set onPanel to true later for the objects present in /D->/Order entry. currentLayer.onPanel = false; layerMap.Put(currentLayer.GetIndirectReference(), currentLayer); } PdfDictionary d = GetPdfObject().GetAsDictionary(PdfName.D); if (d != null && !d.IsEmpty()) { PdfArray off = d.GetAsArray(PdfName.OFF); if (off != null) { for (int i = 0; i < off.Size(); i++) { PdfObject offLayer = off.Get(i, false); if (offLayer.IsIndirectReference()) { layerMap.Get((PdfIndirectReference)offLayer).on = false; } else { layerMap.Get(offLayer.GetIndirectReference()).on = false; } } } PdfArray locked = d.GetAsArray(PdfName.Locked); if (locked != null) { for (int i = 0; i < locked.Size(); i++) { PdfObject lockedLayer = locked.Get(i, false); if (lockedLayer.IsIndirectReference()) { layerMap.Get((PdfIndirectReference)lockedLayer).locked = true; } else { layerMap.Get(lockedLayer.GetIndirectReference()).locked = true; } } } PdfArray orderArray = d.GetAsArray(PdfName.Order); if (orderArray != null && !orderArray.IsEmpty()) { ReadOrderFromDictionary(null, orderArray, layerMap); } } // Add the layers which should not be displayed on the panel to the order list foreach (PdfLayer layer in layerMap.Values) { if (!layer.IsOnPanel()) { layers.Add(layer); } } }
private PdfFormField MakeFormField(PdfObject fieldDict) { PdfFormField field = PdfFormField.MakeFormField(fieldDict, documentTo); if (field == null) { logger.Warn(MessageFormatUtil.Format(iText.IO.LogMessageConstant.CANNOT_CREATE_FORMFIELD, fieldDict.GetIndirectReference ())); } return(field); }