Пример #1
0
        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();
             }
         }
     }
 }
Пример #3
0
        /// <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;
            }
        }