public virtual void ResourcesCategoryDictionarySetModifiedTest() { PdfDictionary pdfDict = new PdfDictionary(); pdfDict.Put(PdfName.ExtGState, new PdfDictionary()); PdfResources resources = new PdfResources(pdfDict); PdfObject resourceCategoryDict = resources.GetPdfObject().Get(PdfName.ExtGState); resourceCategoryDict.SetIndirectReference(new PdfIndirectReference(null, 1)); NUnit.Framework.Assert.IsFalse(resourceCategoryDict.IsModified()); resources.AddExtGState(new PdfExtGState()); // Check that when changing an existing resource category dictionary, the flag PdfObject.MODIFIED will be set for it NUnit.Framework.Assert.IsTrue(resourceCategoryDict.IsModified()); }
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(); } } } }
/// <summary>Flushes all modified objects which have not been flushed yet.</summary> /// <remarks>Flushes all modified objects which have not been flushed yet. Used in case incremental updates.</remarks> protected internal virtual void FlushModifiedWaitingObjects() { PdfXrefTable xref = document.GetXref(); for (int i = 1; i < xref.Size(); i++) { PdfIndirectReference indirectReference = xref.Get(i); if (null != indirectReference) { PdfObject obj = indirectReference.GetRefersTo(false); if (obj != null && !obj.Equals(objectStream) && obj.IsModified()) { obj.Flush(); } } } if (objectStream != null && objectStream.GetSize() > 0) { objectStream.Flush(); objectStream = null; } }