private void FlushOrRelease(PdfObject obj) { if (release) { if (!obj.IsReleaseForbidden()) { obj.Release(); } } else { MakeIndirectIfNeeded(obj); if (!pdfDoc.IsAppendMode() || obj.IsModified()) { obj.Flush(); } else { if (!obj.IsReleaseForbidden()) { obj.Release(); } } } }
public virtual void AddingReleasedObjectToDocumentTest() { String srcFile = sourceFolder + "releaseObjectsInSimpleDoc.pdf"; PdfDocument doc = new PdfDocument(new PdfReader(srcFile), new PdfWriter(sourceFolder + "addingReleasedObjectToDocument.pdf" )); try { PdfObject releasedObj = doc.GetPdfObject(1); releasedObj.Release(); doc.GetCatalog().Put(PdfName.Outlines, releasedObj); } finally { NUnit.Framework.Assert.That(() => { doc.Close(); } , NUnit.Framework.Throws.InstanceOf <PdfException>().With.Message.EqualTo("Cannot write object after it was released." + " In normal situation the object must be read once again before being written.")) ; } }