示例#1
0
文件: PdfObject.cs 项目: n9/pdfclown
 /**
   <summary>Creates a deep copy of this object using the specified cloner.</summary>
 */
 public virtual PdfObject Clone(
     Cloner cloner
     )
 {
     return Accept(cloner, null);
 }
示例#2
0
 /**
   <summary>Gets a clone of the object, registered using the specified object cloner.</summary>
 */
 public virtual object Clone(
     Cloner cloner
     )
 {
     PdfObjectWrapper clone = (PdfObjectWrapper)base.MemberwiseClone();
       clone.BaseObject = (PdfDirectObject)BaseObject.Clone(cloner);
       return clone;
 }
示例#3
0
     public override bool BeforeClone(
 Cloner cloner,
 PdfDictionary parent,
 PdfName key,
 PdfDirectObject value
 )
     {
         return !PdfName.Parent.Equals(key);
     }
示例#4
0
     public override bool Matches(
 Cloner cloner,
 PdfObject obj
 )
     {
         return obj is PdfDictionary
           && PdfName.Page.Equals(((PdfDictionary)obj)[PdfName.Type]);
     }
示例#5
0
     public override bool Matches(
 Cloner cloner,
 PdfObject obj
 )
     {
         if(obj is PdfArray)
         {
           PdfArray array = (PdfArray)obj;
           if(array.Count > 0)
           {
         PdfDataObject arrayItem = array.Resolve(0);
         if(arrayItem is PdfDictionary)
         {
           PdfDictionary arrayItemDictionary = (PdfDictionary)arrayItem;
           return arrayItemDictionary.ContainsKey(PdfName.Subtype)
         && arrayItemDictionary.ContainsKey(PdfName.Rect);
         }
           }
         }
         return false;
     }
示例#6
0
     public override void AfterClone(
 Cloner cloner,
 PdfObject clone,
 PdfObject source
 )
     {
         /*
           NOTE: Inheritable attributes have to be consolidated into the cloned page dictionary in
           order to ensure its consistency.
         */
         PdfDictionary cloneDictionary = (PdfDictionary)clone;
         PdfDictionary sourceDictionary = (PdfDictionary)source;
         foreach(PdfName key in Page.InheritableAttributeKeys)
         {
           if(!sourceDictionary.ContainsKey(key))
           {
         PdfDirectObject sourceValue = Page.GetInheritableAttribute(sourceDictionary, key);
         if(sourceValue != null)
         {cloneDictionary[key] = (PdfDirectObject)sourceValue.Accept(cloner, null);}
           }
         }
     }
示例#7
0
     /**
     <summary>Gets whether this filter can deal with the given object.</summary>
     <param name="cloner">Object cloner.</param>
     <param name="source">Source object.</param>
       */
     public virtual bool Matches(
 Cloner cloner,
 PdfObject source
 )
     {
         return true;
     }
示例#8
0
     public override void AfterClone(
 Cloner cloner,
 PdfArray parent,
 int index,
 PdfDirectObject item
 )
     {
         PdfDictionary annotation = (PdfDictionary)item.Resolve();
         if(annotation.ContainsKey(PdfName.FT))
         {cloner.context.Document.Form.Fields.Add(Field.Wrap(annotation.Reference));}
     }
示例#9
0
     /**
     <summary>Notifies a starting clone operation on an array item.</summary>
     <param name="cloner">Object cloner.</param>
     <param name="parent">Parent clone object.</param>
     <param name="index">Item index within the parent.</param>
     <param name="item">Source item.</param>
     <returns>Whether the clone operation can be fulfilled.</returns>
       */
     public virtual bool BeforeClone(
 Cloner cloner,
 PdfArray parent,
 int index,
 PdfDirectObject item
 )
     {
         return true;
     }
示例#10
0
     /**
     <summary>Notifies a starting clone operation on a dictionary entry.</summary>
     <param name="cloner">Object cloner.</param>
     <param name="parent">Parent clone object.</param>
     <param name="key">Entry key within the parent.</param>
     <param name="value">Source value.</param>
     <returns>Whether the clone operation can be fulfilled.</returns>
       */
     public virtual bool BeforeClone(
 Cloner cloner,
 PdfDictionary parent,
 PdfName key,
 PdfDirectObject value
 )
     {
         return true;
     }
示例#11
0
     /**
     <summary>Notifies a complete clone operation on an array item.</summary>
     <param name="cloner">Object cloner.</param>
     <param name="parent">Parent clone object.</param>
     <param name="index">Item index within the parent.</param>
     <param name="item">Clone item.</param>
       */
     public virtual void AfterClone(
 Cloner cloner,
 PdfArray parent,
 int index,
 PdfDirectObject item
 )
     {
         /* NOOP */
     }
示例#12
0
     /**
     <summary>Notifies a complete clone operation on a dictionary entry.</summary>
     <param name="cloner">Object cloner.</param>
     <param name="parent">Parent clone object.</param>
     <param name="key">Entry key within the parent.</param>
     <param name="value">Clone value.</param>
       */
     public virtual void AfterClone(
 Cloner cloner,
 PdfDictionary parent,
 PdfName key,
 PdfDirectObject value
 )
     {
         /* NOOP */
     }
示例#13
0
     /**
     <summary>Notifies a complete clone operation on an object.</summary>
     <param name="cloner">Object cloner.</param>
     <param name="clone">Clone object.</param>
     <param name="source">Source object.</param>
       */
     public virtual void AfterClone(
 Cloner cloner,
 PdfObject clone,
 PdfObject source
 )
     {
         /* NOOP */
     }