internal void AddAnnotation(PdfAnnotation annot, PdfDictionary pageN) { List<PdfAnnotation> allAnnots = new List<PdfAnnotation>(); if (annot.IsForm()) { fieldsAdded = true; GetAcroFields(); PdfFormField field = (PdfFormField)annot; if (field.Parent != null) return; ExpandFields(field, allAnnots); } else allAnnots.Add(annot); for (int k = 0; k < allAnnots.Count; ++k) { annot = allAnnots[k]; if (annot.PlaceInPage > 0) pageN = reader.GetPageN(annot.PlaceInPage); if (annot.IsForm()) { if (!annot.IsUsed()) { HashSet2<PdfTemplate> templates = annot.GetTemplates(); if (templates != null) fieldTemplates.AddAll(templates); } PdfFormField field = (PdfFormField)annot; if (field.Parent == null) AddDocumentField(field.IndirectReference); } if (annot.IsAnnotation()) { PdfObject pdfobj = PdfReader.GetPdfObject(pageN.Get(PdfName.ANNOTS), pageN); PdfArray annots = null; if (pdfobj == null || !pdfobj.IsArray()) { annots = new PdfArray(); pageN.Put(PdfName.ANNOTS, annots); MarkUsed(pageN); } else annots = (PdfArray)pdfobj; annots.Add(annot.IndirectReference); MarkUsed(annots); if (!annot.IsUsed()) { PdfRectangle rect = (PdfRectangle)annot.Get(PdfName.RECT); if (rect != null && (rect.Left != 0 || rect.Right != 0 || rect.Top != 0 || rect.Bottom != 0)) { int rotation = reader.GetPageRotation(pageN); Rectangle pageSize = reader.GetPageSizeWithRotation(pageN); switch (rotation) { case 90: annot.Put(PdfName.RECT, new PdfRectangle( pageSize.Top - rect.Top, rect.Right, pageSize.Top - rect.Bottom, rect.Left)); break; case 180: annot.Put(PdfName.RECT, new PdfRectangle( pageSize.Right - rect.Left, pageSize.Top - rect.Bottom, pageSize.Right - rect.Right, pageSize.Top - rect.Top)); break; case 270: annot.Put(PdfName.RECT, new PdfRectangle( rect.Bottom, pageSize.Right - rect.Left, rect.Top, pageSize.Right - rect.Right)); break; } } } } if (!annot.IsUsed()) { annot.SetUsed(); AddToBody(annot, annot.IndirectReference); } } }
internal void AddAnnotation(PdfAnnotation annot, PdfDictionary pageN) { ArrayList allAnnots = new ArrayList(); if (annot.IsForm()) { fieldsAdded = true; AcroFields afdummy = AcroFields; PdfFormField field = (PdfFormField)annot; if (field.Parent != null) return; ExpandFields(field, allAnnots); } else allAnnots.Add(annot); for (int k = 0; k < allAnnots.Count; ++k) { annot = (PdfAnnotation)allAnnots[k]; if (annot.PlaceInPage > 0) pageN = reader.GetPageN(annot.PlaceInPage); if (annot.IsForm()) { if (!annot.IsUsed()) { Hashtable templates = annot.Templates; if (templates != null) { foreach (object tpl in templates.Keys) { fieldTemplates[tpl] = null; } } } PdfFormField field = (PdfFormField)annot; if (field.Parent == null) AddDocumentField(field.IndirectReference); } if (annot.IsAnnotation()) { PdfArray annots = (PdfArray)PdfReader.GetPdfObject(pageN.Get(PdfName.ANNOTS), pageN); if (annots == null) { annots = new PdfArray(); pageN.Put(PdfName.ANNOTS, annots); MarkUsed(pageN); } annots.Add(annot.IndirectReference); MarkUsed(annots); if (!annot.IsUsed()) { PdfRectangle rect = (PdfRectangle)annot.Get(PdfName.RECT); if (rect != null && (rect.Left != 0 || rect.Right != 0 || rect.Top != 0 || rect.Bottom != 0)) { int rotation = reader.GetPageRotation(pageN); Rectangle pageSize = reader.GetPageSizeWithRotation(pageN); switch (rotation) { case 90: annot.Put(PdfName.RECT, new PdfRectangle( pageSize.Top - rect.Bottom, rect.Left, pageSize.Top - rect.Top, rect.Right)); break; case 180: annot.Put(PdfName.RECT, new PdfRectangle( pageSize.Right - rect.Left, pageSize.Top - rect.Bottom, pageSize.Right - rect.Right, pageSize.Top - rect.Top)); break; case 270: annot.Put(PdfName.RECT, new PdfRectangle( rect.Bottom, pageSize.Right - rect.Left, rect.Top, pageSize.Right - rect.Right)); break; } } } } if (!annot.IsUsed()) { annot.SetUsed(); AddToBody(annot, annot.IndirectReference); } } }
public void AddAnnotation(PdfAnnotation annot) { List<PdfAnnotation> allAnnots = new List<PdfAnnotation>(); if (annot.IsForm()) { PdfFormField field = (PdfFormField)annot; if (field.Parent != null) return; ExpandFields(field, allAnnots); if (cstp.fieldTemplates == null) cstp.fieldTemplates = new Dictionary<PdfTemplate,object>(); } else allAnnots.Add(annot); for (int k = 0; k < allAnnots.Count; ++k) { annot = allAnnots[k]; if (annot.IsForm()) { if (!annot.IsUsed()) { Dictionary<PdfTemplate,object> templates = annot.Templates; if (templates != null) { foreach (PdfTemplate tpl in templates.Keys) { cstp.fieldTemplates[tpl] = null; } } } PdfFormField field = (PdfFormField)annot; if (field.Parent == null) AddDocumentField(field.IndirectReference); } if (annot.IsAnnotation()) { PdfObject pdfobj = PdfReader.GetPdfObject(pageN.Get(PdfName.ANNOTS), pageN); PdfArray annots = null; if (pdfobj == null || !pdfobj.IsArray()) { annots = new PdfArray(); pageN.Put(PdfName.ANNOTS, annots); } else annots = (PdfArray)pdfobj; annots.Add(annot.IndirectReference); if (!annot.IsUsed()) { PdfRectangle rect = (PdfRectangle)annot.Get(PdfName.RECT); if (rect != null && (rect.Left != 0 || rect.Right != 0 || rect.Top != 0 || rect.Bottom != 0)) { int rotation = reader.GetPageRotation(pageN); Rectangle pageSize = reader.GetPageSizeWithRotation(pageN); switch (rotation) { case 90: annot.Put(PdfName.RECT, new PdfRectangle( pageSize.Top - rect.Bottom, rect.Left, pageSize.Top - rect.Top, rect.Right)); break; case 180: annot.Put(PdfName.RECT, new PdfRectangle( pageSize.Right - rect.Left, pageSize.Top - rect.Bottom, pageSize.Right - rect.Right, pageSize.Top - rect.Top)); break; case 270: annot.Put(PdfName.RECT, new PdfRectangle( rect.Bottom, pageSize.Right - rect.Left, rect.Top, pageSize.Right - rect.Right)); break; } } } } if (!annot.IsUsed()) { annot.SetUsed(); cstp.AddToBody(annot, annot.IndirectReference); } } }
virtual public void AddAnnotation(PdfAnnotation annot) { if (annot.IsForm()) { PdfFormField field = (PdfFormField)annot; if (field.Parent == null) AddFormFieldRaw(field); } else annotations.Add(annot); }
public static PdfAnnotation ShallowDuplicate(PdfAnnotation annot) { PdfAnnotation dup; if (annot.IsForm()) { dup = new PdfFormField(annot.writer); PdfFormField dupField = (PdfFormField)dup; PdfFormField srcField = (PdfFormField)annot; dupField.parent = srcField.parent; dupField.kids = srcField.kids; } else dup = new PdfAnnotation(annot.writer, null); dup.Merge(annot); dup.form = annot.form; dup.annotation = annot.annotation; dup.templates = annot.templates; return dup; }
public void AddAnnotation(PdfAnnotation annot) { List <PdfAnnotation> allAnnots = new List <PdfAnnotation>(); if (annot.IsForm()) { PdfFormField field = (PdfFormField)annot; if (field.Parent != null) { return; } ExpandFields(field, allAnnots); if (cstp.fieldTemplates == null) { cstp.fieldTemplates = new Dictionary <PdfTemplate, object>(); } } else { allAnnots.Add(annot); } for (int k = 0; k < allAnnots.Count; ++k) { annot = allAnnots[k]; if (annot.IsForm()) { if (!annot.IsUsed()) { Dictionary <PdfTemplate, object> templates = annot.Templates; if (templates != null) { foreach (PdfTemplate tpl in templates.Keys) { cstp.fieldTemplates[tpl] = null; } } } PdfFormField field = (PdfFormField)annot; if (field.Parent == null) { AddDocumentField(field.IndirectReference); } } if (annot.IsAnnotation()) { PdfObject pdfobj = PdfReader.GetPdfObject(pageN.Get(PdfName.ANNOTS), pageN); PdfArray annots = null; if (pdfobj == null || !pdfobj.IsArray()) { annots = new PdfArray(); pageN.Put(PdfName.ANNOTS, annots); } else { annots = (PdfArray)pdfobj; } annots.Add(annot.IndirectReference); if (!annot.IsUsed()) { PdfRectangle rect = (PdfRectangle)annot.Get(PdfName.RECT); if (rect != null && (rect.Left != 0 || rect.Right != 0 || rect.Top != 0 || rect.Bottom != 0)) { int rotation = reader.GetPageRotation(pageN); Rectangle pageSize = reader.GetPageSizeWithRotation(pageN); switch (rotation) { case 90: annot.Put(PdfName.RECT, new PdfRectangle( pageSize.Top - rect.Bottom, rect.Left, pageSize.Top - rect.Top, rect.Right)); break; case 180: annot.Put(PdfName.RECT, new PdfRectangle( pageSize.Right - rect.Left, pageSize.Top - rect.Bottom, pageSize.Right - rect.Right, pageSize.Top - rect.Top)); break; case 270: annot.Put(PdfName.RECT, new PdfRectangle( rect.Bottom, pageSize.Right - rect.Left, rect.Top, pageSize.Right - rect.Right)); break; } } } } if (!annot.IsUsed()) { annot.SetUsed(); cstp.AddToBody(annot, annot.IndirectReference); } } }