private void RemovePageTagFromParent(IPdfStructElem pageTag, IPdfStructElem parent) { if (parent is PdfStructElem) { PdfStructElem structParent = (PdfStructElem)parent; if (!structParent.IsFlushed()) { structParent.RemoveKid(pageTag); PdfDictionary parentObject = structParent.GetPdfObject(); if (!connectedStructToModel.ContainsKey(parentObject) && parent.GetKids().Count == 0 && parentObject != rootTagElement .GetPdfObject()) { RemovePageTagFromParent(structParent, parent.GetParent()); parentObject.GetIndirectReference().SetFree(); } } else { if (pageTag is PdfMcr) { throw new PdfException(PdfException.CannotRemoveTagBecauseItsParentIsFlushed); } } } }
private void FlushAllKids(IPdfStructElem elem) { foreach (IPdfStructElem kid in elem.GetKids()) { if (kid is PdfStructElem) { FlushAllKids(kid); ((PdfStructElem)kid).Flush(); } } }