public void PutHighlightAnnotationTest() { HighlightAnnotation annotation = new HighlightAnnotation(Rect: new Rectangle(101, 101, 201, 201)) { Name = "Test Highlight Annotation Updated", Flags = new List <AnnotationFlags> { AnnotationFlags.Hidden, AnnotationFlags.NoView }, HorizontalAlignment = HorizontalAlignment.Center, RichText = "Rich Text Updated", Subject = "Subj Updated", ZIndex = 1, Title = "Title Updated", QuadPoints = new List <Point> { new Point(11, 11), new Point(21, 11), new Point(11, 21), new Point(11, 11) }, Modified = "02/02/2018 00:00:00.000 AM" }; var lineResponse = PdfApi.GetDocumentHighlightAnnotations(Name, folder: TempFolder); string annotationId = lineResponse.Annotations.List[0].Id; var response = PdfApi.PutHighlightAnnotation(Name, annotationId, annotation, folder: TempFolder); Assert.That(response.Code, Is.EqualTo(200)); }
public void HighlightAnnotationEvent_MatchesReferenceJson() { var highlightAnnotation = new HighlightAnnotation("https://example.edu/highlights/12345") { Annotated = TestEntities.EpubSubChap431, Selection = new TextPositionSelector { Start = "455", End = "489" }, SelectionText = "Life, Liberty and the pursuit of Happiness", DateCreated = TestEntities.DefaultDateCreated, DateModified = TestEntities.DefaultDateModified }; var highlightEvent = new AnnotationEvent(highlightAnnotation) { Actor = TestEntities.User554433, Object = TestEntities.EpubSubChap431_Frame, EventTime = TestEntities.DefaultStartedAtTime, EdApp = TestEntities.EpubViewerApp, Group = TestEntities.AmRev101_Group001, Membership = TestEntities.User554433_AmRev101_CourseSection001_Membership }; JsonAssertions.AssertSameObjectJson(highlightEvent, "caliperHighlightAnnotationEvent"); }
public void PutHighlightAnnotationTest() { HighlightAnnotation annotation = new HighlightAnnotation() { Name = "Test Highlight Annotation Updated", Rect = new Rectangle(101, 101, 201, 201), Flags = new List <AnnotationFlags> { AnnotationFlags.Hidden, AnnotationFlags.NoView }, HorizontalAlignment = HorizontalAlignment.Center, RichText = "Rich Text Updated", Subject = "Subj Updated", ZIndex = 1, Title = "Title Updated", QuadPoints = new List <Point> { new Point(11, 11), new Point(21, 11), new Point(11, 21), new Point(11, 11) }, Modified = "02/02/2018 00:00:00.000 AM" }; var lineResponse = api.GetDocumentHighlightAnnotations(Name, folder: FolderName); string annotationId = lineResponse.Annotations.List[0].Id; var response = api.PutHighlightAnnotation(Name, annotationId, annotation, folder: FolderName); Console.WriteLine(response); }
public TextHighlightAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) : base(annotationData, pageInfo) { highlightAnnotation = new HighlightAnnotation { Points = GetPoints(annotationData, pageInfo) }; }
public void TesHighlightAnnotation() { Document document = new Document(); document.Pages.Add(new Page(PaperFormat.A4)); HighlightAnnotation annot = new HighlightAnnotation(100, 50, 75, 50); annot.Contents = "PDF highlight annotation"; annot.Color = new ColorRGB(0, 250, 0); document.Pages[0].Annotations.Add(annot); document.Save(OutputFolder + @"\TestHighlightAnnotation.pdf"); document.Dispose(); //Process.Start("TestHighlightAnnotation.pdf"); }
/** * Creates annotation, type of annotation is taken from given properties */ public static Annotation CreateAnnotation(Document doc, Page page, int index, AnnotationProperties props) { Annotation ann = null; int addAfter = index - 1; switch (props.Subtype) { case "Line": ann = new LineAnnotation(page, props.BoundingRect, props.StartPoint, props.EndPoint, addAfter); break; case "Circle": ann = new CircleAnnotation(page, props.BoundingRect, addAfter); break; case "Square": ann = new SquareAnnotation(page, props.BoundingRect, addAfter); break; case "FreeText": ann = new FreeTextAnnotation(page, props.BoundingRect, "", addAfter); break; case "PolyLine": ann = new PolyLineAnnotation(page, props.BoundingRect, props.Vertices, addAfter); break; case "Polygon": ann = new PolygonAnnotation(page, props.BoundingRect, props.Vertices, addAfter); break; case "Link": ann = new LinkAnnotation(page, props.BoundingRect, addAfter); break; case "Ink": ann = new InkAnnotation(page, props.BoundingRect, addAfter); break; case "Underline": ann = new UnderlineAnnotation(page, addAfter, props.Quads); break; case "Highlight": ann = new HighlightAnnotation(page, addAfter, props.Quads); break; default: throw new Exception("Logic error"); } AnnotationAppearance app = new AnnotationAppearance(doc, ann); app.CaptureAnnotation(); app.Properties.SetFrom(props); app.Properties.Dirty = true; app.UpdateAppearance(); app.ReleaseAnnotation(); return(ann); }
static void Main(string[] args) { Console.WriteLine("UnderlinesAndHighlights Sample:"); using (Library lib = new Library()) { Console.WriteLine("Initialized the library."); String sInput = "../../Resources/Sample_Input/sample.pdf"; String sOutput = "../HighlightAndUnderlineAnnotations-out.pdf"; if (args.Length > 0) { sInput = args[0]; } if (args.Length > 1) { sOutput = args[1]; } Document doc = new Document(sInput); Console.WriteLine("Opened a document " + sInput); Page docpage = doc.GetPage(0); // // Highlight occurrences of the word "cloudy" on the page. // Underline occurrences of the word "rain" on the page. // // For a more in-depth example of using the WordFinder, see the TextExtraction sample. // List <Quad> cloudyQuads = new List <Quad>(); List <Quad> rainQuads = new List <Quad>(); WordFinderConfig wfc = new WordFinderConfig(); WordFinder wf = new WordFinder(doc, WordFinderVersion.Latest, wfc); IList <Word> words = wf.GetWordList(docpage.PageNumber); foreach (Word w in words) { // Store the Quads of all "Cloudy" words in a list for later use in // creating the annotation. if (w.Text.ToLower().Equals("cloudy") || ((w.Attributes & WordAttributeFlags.HasTrailingPunctuation) == WordAttributeFlags.HasTrailingPunctuation && w.Text.ToLower().StartsWith("cloudy"))) { cloudyQuads.AddRange(w.Quads); } // Store the Quads of all "Rain" words if (w.Text.ToLower().Equals("rain") || ((w.Attributes & WordAttributeFlags.HasTrailingPunctuation) == WordAttributeFlags.HasTrailingPunctuation && w.Text.ToLower().StartsWith("rain"))) { rainQuads.AddRange(w.Quads); } } HighlightAnnotation highlights = new HighlightAnnotation(docpage, cloudyQuads); highlights.Color = new Color(1.0, 0.75, 1.0); highlights.NormalAppearance = highlights.GenerateAppearance(); UnderlineAnnotation underlines = new UnderlineAnnotation(docpage, rainQuads); underlines.Color = new Color(0.0, 0.0, 0.0); underlines.NormalAppearance = underlines.GenerateAppearance(); // Read back the text that was annotated. Console.WriteLine("Cloudy text: {0}", highlights.GetAnnotatedText(true)); Console.WriteLine("Rainy text: {0}", underlines.GetAnnotatedText(false)); doc.Save(SaveFlags.Full, sOutput); } }
static void Main(string[] args) { Console.WriteLine("RegexTextSearch Sample:"); using (Library lib = new Library()) { Console.WriteLine("Initialized the library."); String sInput = Library.ResourceDirectory + "Sample_Input/RegexTextSearch.pdf"; String sOutput = "RegexTextSearch-out.pdf"; // Highlight occurrences of the phrases that match this regular expression. // Uncomment only the one you are interested in seeing displayed with highlights. // Phone numbers String sRegex = "((1-)?(\\()?\\d{3}(\\))?(\\s)?(-)?\\d{3}-\\d{4})"; // Email addresses //String sRegex = "(\\b[\\w.!#$%&'*+\\/=?^`{|}~-]+@[\\w-]+(?:\\.[\\w-]+)*\\b)"; // URLs //String sRegex = "((https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,}))"; if (args.Length > 0) { sInput = args[0]; } using (Document doc = new Document(sInput)) { int nPages = doc.NumPages; Console.WriteLine("Input file: " + sInput); WordFinderConfig wordConfig = new WordFinderConfig(); // Need to set this to true so phrases will be concatenated properly wordConfig.NoHyphenDetection = true; // Create a DocTextFinder with the default wordfinder parameters using (DocTextFinder docTextFinder = new DocTextFinder(doc, wordConfig)) { // Retrieve the phrases matching a regular expression IList <DocTextFinderMatch> docMatches = docTextFinder.GetMatchList(0, nPages - 1, sRegex); foreach (DocTextFinderMatch wInfo in docMatches) { // Show the matching phrase Console.WriteLine(wInfo.MatchString); // Get the quads IList <DocTextFinderQuadInfo> QuadInfo = wInfo.QuadInfo; // Iterate through the quad info and create highlights foreach (DocTextFinderQuadInfo qInfo in QuadInfo) { Page docpage = doc.GetPage(qInfo.PageNum); // Highlight the matched string words var highlight = new HighlightAnnotation(docpage, qInfo.Quads); highlight.NormalAppearance = highlight.GenerateAppearance(); } } // Save the document with the highlighted matched strings doc.Save(SaveFlags.Full, sOutput); } } } }
public override AnnotationBase AnnotateImage() { highlightAnnotation = InitAnnotationBase(highlightAnnotation) as HighlightAnnotation; highlightAnnotation.Points = GetPointsForImages(annotationData, pageInfo); return(highlightAnnotation); }
public override AnnotationBase AnnotateWord() { highlightAnnotation = InitAnnotationBase(highlightAnnotation) as HighlightAnnotation; return(highlightAnnotation); }
private void parseAnnotations() { for (int i = 0; i < _array.Count; ++i) { PDFDictionary annotDict = _array[i] as PDFDictionary; if (annotDict != null) { if (annotDict["IRT"] == null) { PDFName subtype = annotDict["Subtype"] as PDFName; if (subtype != null) { Annotation annot = null; switch (subtype.GetValue()) { case "Text": annot = new TextAnnotation(annotDict, _owner); break; case "Link": annot = new LinkAnnotation(annotDict, _owner); break; case "FreeText": annot = new FreeTextAnnotation(annotDict, _owner); break; case "Line": annot = new LineAnnotation(annotDict, _owner); break; case "Square": annot = new SquareAnnotation(annotDict, _owner); break; case "Circle": annot = new CircleAnnotation(annotDict, _owner); break; case "Polygon": annot = new PolygonAnnotation(annotDict, _owner); break; case "PolyLine": annot = new PolylineAnnotation(annotDict, _owner); break; case "Highlight": annot = new HighlightAnnotation(annotDict, _owner); break; case "Underline": annot = new UnderlineAnnotation(annotDict, _owner); break; case "Squiggly": annot = new SquigglyAnnotation(annotDict, _owner); break; case "StrikeOut": annot = new StrikeOutAnnotation(annotDict, _owner); break; case "Stamp": annot = new RubberStampAnnotation(annotDict, _owner); break; case "Caret": annot = new CaretAnnotation(annotDict, _owner); break; case "Ink": annot = new InkAnnotation(annotDict, _owner); break; case "FileAttachment": annot = new FileAttachmentAnnotation(annotDict, _owner); break; case "Sound": annot = new SoundAnnotation(annotDict, _owner); break; case "Movie": annot = new MovieAnnotation(annotDict, _owner); break; case "Screen": annot = new ScreenAnnotation(annotDict, _owner); break; case "3D": annot = new ThreeDAnnotation(annotDict, _owner); break; case "Widget": PDFName ft = annotDict["FT"] as PDFName; if (ft == null) { PDFDictionary parent = annotDict["Parent"] as PDFDictionary; if (parent != null) { ft = parent["FT"] as PDFName; } } if (ft != null) { switch (ft.GetValue()) { case "Tx": annot = new EditBox(annotDict, _owner); break; case "Ch": uint flag = getFlag(annotDict); if ((flag >> 17) % 2 != 0) { annot = new ComboBox(annotDict, _owner); } else { annot = new ListBox(annotDict, _owner); } break; case "Btn": flag = getFlag(annotDict); if ((flag >> 16) % 2 != 0) { annot = new PushButton(annotDict, _owner); } else if ((flag >> 15) % 2 != 0) { annot = new RadioButton(annotDict, _owner); } else { annot = new CheckBox(annotDict, _owner); } break; } } break; } if (annot != null) { annot.SetPage(_page, false); _annotations.Add(annot); } } } } } }