public static void DeleteExistingHighlights(Document document) { for (int i = 1; i <= document.GetPageCount(); i++) { pdftron.PDF.Page page = document.GetPage(i); int annotCount = page.GetNumAnnots(); List <Annot> annotsToDelete = new List <Annot>(); for (int j = 0; j < page.GetNumAnnots(); j++) { Annot annot = page.GetAnnot(j); if (annot.GetSDFObj() != null && annot.GetType() == Annot.Type.e_Highlight) { annotsToDelete.Add(annot); } else { } } foreach (Annot annot in annotsToDelete) { page.AnnotRemove(annot); } } }
public static List <ColorPt> ExistingColors(this Document document) { List <ColorPt> existingColorPts = new List <ColorPt>(); for (int i = 1; i <= document.GetPageCount(); i++) { pdftron.PDF.Page page = document.GetPage(i); if (page.IsValid()) { for (int j = 0; j < page.GetNumAnnots(); j++) { Annot annot = page.GetAnnot(j); if (annot.GetSDFObj() != null && (annot.GetType() == Annot.Type.e_Highlight || annot.GetType() == Annot.Type.e_Unknown)) { ColorPt existingColorPt = annot.GetColorAsRGB(); if (existingColorPts.Where(e => e.Get(0) == existingColorPt.Get(0) && e.Get(1) == existingColorPt.Get(1) && e.Get(2) == existingColorPt.Get(2) && e.Get(3) == existingColorPt.Get(3) ).Count() == 0) { existingColorPts.Add(existingColorPt); } } } } } return(existingColorPts); }
static Annot CreateSingleHighlightAnnot(Document document, List <Rect> boxes, ColorPt colorPt, double highlightOpacity) { Annot annotation = Annot.Create(document, Annot.Type.e_Highlight, RectangleUnion(boxes)); annotation.SetColor(colorPt); annotation.SetBorderStyle(new Annot.BorderStyle (Annot.BorderStyle.Style.e_solid, 1)); Obj quads = annotation.GetSDFObj().PutArray("QuadPoints"); List <Rect> lineRectangles = boxes.GroupBy(box => box.y1).Select(line => RectangleUnion(line.ToList())).ToList(); lineRectangles.ForEach(lineRect => PushBackBox(quads, lineRect)); annotation.SetAppearance(CreateHighlightAppearance(lineRectangles, colorPt, highlightOpacity, document)); return(annotation); }
private static void AnnotationHighLevelAPI(PDFDoc doc) { // The following code snippet traverses all annotations in the document System.Console.WriteLine("Traversing all annotations in the document..."); string uri; int page_num = 1; for (PageIterator itr = doc.GetPageIterator(); itr.HasNext(); itr.Next()) { System.Console.WriteLine("Page " + page_num++ + ": "); Page page = itr.Current(); int num_annots = page.GetNumAnnots(); for (int i = 0; i < num_annots; ++i) { Annot annot = page.GetAnnot(i); if (!annot.IsValid()) { continue; } System.Console.WriteLine("Annot Type: " + annot.GetSDFObj().Get("Subtype").Value().GetName()); Rect bbox = annot.GetRect(); System.Console.WriteLine(" Position: " + bbox.x1 + ", " + bbox.y1 + ", " + bbox.x2 + ", " + bbox.y2); switch (annot.GetType()) { case Annot.Type.e_Link: { Link lnk = new Link(annot); Action action = lnk.GetAction(); if (!action.IsValid()) { continue; } if (action.GetType() == Action.Type.e_GoTo) { Destination dest = action.GetDest(); if (!dest.IsValid()) { System.Console.WriteLine(" Destination is not valid"); } else { int pg_num = dest.GetPage().GetIndex(); System.Console.WriteLine(" Links to: page number " + pg_num + " in this document"); } } else if (action.GetType() == Action.Type.e_URI) { uri = action.GetSDFObj().Get("URI").Value().GetAsPDFText(); System.Console.WriteLine(" Links to: " + uri); } // ... } break; case Annot.Type.e_Widget: break; case Annot.Type.e_FileAttachment: break; // ... default: break; } } } // Use the high-level API to create new annotations. Page first_page = doc.GetPage(1); // Create a hyperlink... Link hyperlink = Link.Create(doc, new Rect(85, 570, 503, 524), Action.CreateURI(doc, "http://www.pdftron.com")); first_page.AnnotPushBack(hyperlink); // Create an intra-document link... Action goto_page_3 = Action.CreateGoto(Destination.CreateFitH(doc.GetPage(3), 0)); Link link = Link.Create(doc, new Rect(85, 458, 503, 502), goto_page_3); // Set the annotation border width to 3 points... Annot.BorderStyle border_style = new Annot.BorderStyle(Annot.BorderStyle.Style.e_solid, 3, 0, 0); //link.SetBorderStyle(border_style); link.SetColor(new ColorPt(0, 0, 1)); // Add the new annotation to the first page first_page.AnnotPushBack(link); // Create a stamp annotation ... RubberStamp stamp = RubberStamp.Create(doc, new Rect(30, 30, 300, 200)); stamp.SetIcon("Draft"); first_page.AnnotPushBack(stamp); // Create a file attachment annotation (embed the 'peppers.jpg'). FileAttachment file_attach = FileAttachment.Create(doc, new Rect(80, 280, 200, 320), (input_path + "peppers.jpg")); first_page.AnnotPushBack(file_attach); Ink ink = Ink.Create(doc, new Rect(110, 10, 300, 200)); Point pt3 = new Point(110, 10); //pt3.x = 110; pt3.y = 10; ink.SetPoint(0, 0, pt3); pt3.x = 150; pt3.y = 50; ink.SetPoint(0, 1, pt3); pt3.x = 190; pt3.y = 60; ink.SetPoint(0, 2, pt3); pt3.x = 180; pt3.y = 90; ink.SetPoint(1, 0, pt3); pt3.x = 190; pt3.y = 95; ink.SetPoint(1, 1, pt3); pt3.x = 200; pt3.y = 100; ink.SetPoint(1, 2, pt3); pt3.x = 166; pt3.y = 86; ink.SetPoint(2, 0, pt3); pt3.x = 196; pt3.y = 96; ink.SetPoint(2, 1, pt3); pt3.x = 221; pt3.y = 121; ink.SetPoint(2, 2, pt3); pt3.x = 288; pt3.y = 188; ink.SetPoint(2, 3, pt3); ink.SetColor(new ColorPt(0, 1, 1), 3); first_page.AnnotPushBack(ink); }
public static void AnnotationsImport(QuotationType quotationType) { // Static Variables PreviewControl previewControl = PreviewMethods.GetPreviewControl(); if (previewControl == null) { return; } PdfViewControl pdfViewControl = previewControl.GetPdfViewControl(); if (pdfViewControl == null) { return; } Document document = pdfViewControl.Document; if (document == null) { return; } Location location = previewControl.ActiveLocation; if (location == null) { return; } List <Reference> references = Program.ActiveProjectShell.Project.References.Where(r => r.Locations.Contains(location)).ToList(); if (references == null) { return; } if (references.Count != 1) { MessageBox.Show("The document is not linked with exactly one reference. Import aborted."); } Reference reference = references.FirstOrDefault(); if (references == null) { return; } LinkedResource linkedResource = location.Address; string pathToFile = linkedResource.Resolve().LocalPath; PreviewBehaviour previewBehaviour = location.PreviewBehaviour; // Dynamic Variables string colorPickerCaption = string.Empty; List <ColorPt> selectedColorPts = new List <ColorPt>(); int annotationsImportedCount = 0; bool ImportEmptyAnnotations = false; bool RedrawAnnotations = true; // The Magic Form commentAnnotationsColorPicker = new AnnotationsImporterColorPicker(quotationType, document.ExistingColors(), out selectedColorPts); DialogResult dialogResult = commentAnnotationsColorPicker.ShowDialog(); RedrawAnnotations = AnnotationsImporterColorPicker.RedrawAnnotationsSelected; ImportEmptyAnnotations = AnnotationsImporterColorPicker.ImportEmptyAnnotationsSelected; if (dialogResult == DialogResult.Cancel) { MessageBox.Show("Import of external highlights cancelled."); return; } List <Annotation> temporaryAnnotations = new List <Annotation>(); if (ImportEmptyAnnotations || quotationType == QuotationType.Comment) { for (int pageIndex = 1; pageIndex <= document.GetPageCount(); pageIndex++) { pdftron.PDF.Page page = document.GetPage(pageIndex); if (page.IsValid()) { List <Annot> annotsToDelete = new List <Annot>(); for (int j = 0; j < page.GetNumAnnots(); j++) { Annot annot = page.GetAnnot(j); if (annot.GetSDFObj() != null && (annot.GetType() == Annot.Type.e_Highlight || annot.GetType() == Annot.Type.e_Unknown)) { Highlight highlight = new Highlight(annot); if (highlight == null) { continue; } ColorPt annotColorPt = annot.GetColorAsRGB(); if (selectedColorPts.Where(e => e.Get(0) == annotColorPt.Get(0) && e.Get(1) == annotColorPt.Get(1) && e.Get(2) == annotColorPt.Get(2) && e.Get(3) == annotColorPt.Get(3) ).Count() == 0) { continue; } Annotation temporaryAnnotation = highlight.TemporaryAnnotation(); location.Annotations.Add(temporaryAnnotation); temporaryAnnotations.Add(temporaryAnnotation); } } // end for (int j = 1; j <= page.GetNumAnnots(); j++) } // end if (page.IsValid()) } // end for (int i = 1; i <= document.GetPageCount(); i++) previewControl.ShowNoPreview(); location.PreviewBehaviour = PreviewBehaviour.SkipEntryPage; previewControl.ShowLocationPreview(location); document = new Document(pathToFile); } //Uncomment here to get an overview of all annotations //int x = 0; //foreach (Annotation a in location.Annotations) //{ // System.Diagnostics.Debug.WriteLine("Annotation " + x.ToString()); // int y = 0; // foreach (Quad q in a.Quads) // { // System.Diagnostics.Debug.WriteLine("Quad " + y.ToString()); // System.Diagnostics.Debug.WriteLine("IsContainer: " + q.IsContainer.ToString()); // System.Diagnostics.Debug.WriteLine("MinX: " + q.MinX.ToString()); // System.Diagnostics.Debug.WriteLine("MinY: " + q.MinY.ToString()); // System.Diagnostics.Debug.WriteLine("MaxX: " + q.MaxX.ToString()); // System.Diagnostics.Debug.WriteLine("MaxY: " + q.MaxY.ToString()); // y = y + 1; // } // x = x + 1; //} int v = 0; for (int pageIndex = 1; pageIndex <= document.GetPageCount(); pageIndex++) { pdftron.PDF.Page page = document.GetPage(pageIndex); if (page.IsValid()) { List <Annot> annotsToDelete = new List <Annot>(); for (int j = 0; j < page.GetNumAnnots(); j++) { Annot annot = page.GetAnnot(j); if (annot.GetSDFObj() != null && (annot.GetType() == Annot.Type.e_Highlight || annot.GetType() == Annot.Type.e_Unknown)) { Highlight highlight = new Highlight(annot); if (highlight == null) { continue; } ColorPt annotColorPt = annot.GetColorAsRGB(); if (selectedColorPts.Where(e => e.Get(0) == annotColorPt.Get(0) && e.Get(1) == annotColorPt.Get(1) && e.Get(2) == annotColorPt.Get(2) && e.Get(3) == annotColorPt.Get(3) ).Count() == 0) { continue; } // Uncomment here to get an overview of all highlights //System.Diagnostics.Debug.WriteLine("Highlight " + v.ToString()); //int w = 0; //foreach (Quad q in highlight.AsAnnotationQuads()) //{ // System.Diagnostics.Debug.WriteLine("Quad " + w.ToString()); // System.Diagnostics.Debug.WriteLine("IsContainer: " + q.IsContainer.ToString()); // System.Diagnostics.Debug.WriteLine("MinX: " + q.MinX.ToString()); // System.Diagnostics.Debug.WriteLine("MinY: " + q.MinY.ToString()); // System.Diagnostics.Debug.WriteLine("MaxX: " + q.MaxX.ToString()); // System.Diagnostics.Debug.WriteLine("MaxY: " + q.MaxY.ToString()); // w = w + 1; //} //v = v + 1; if (highlight.UpdateExistingQuotation(quotationType, location)) { annotationsImportedCount++; continue; } if (highlight.CreateNewQuotationAndAnnotationFromHighlight(quotationType, ImportEmptyAnnotations, RedrawAnnotations, temporaryAnnotations)) { annotationsImportedCount++; continue; } } } // end for (int j = 1; j <= page.GetNumAnnots(); j++) foreach (Annot annot in annotsToDelete) { page.AnnotRemove(annot); } } // end if (page.IsValid()) } // end for (int i = 1; i <= document.GetPageCount(); i++) foreach (Annotation annotation in temporaryAnnotations) { location.Annotations.Remove(annotation); } location.PreviewBehaviour = previewBehaviour; MessageBox.Show(annotationsImportedCount.ToString() + " highlights have been imported."); }