Annotate documents with GroupDocs.Annotation
Leave feedback
On this page
GroupDocs.Annotation adds review markup to documents — areas, arrows, highlights, strikeouts, text fields, watermarks and threaded replies — and reads back the annotations already on a file. It is the API behind a document review or collaboration feature.
Add an area annotation
An area annotation boxes a region of a page and attaches a comment to it. setBox takes the rectangle in points, and setPageNumber is zero-based.
importcom.groupdocs.annotation.Annotator;importcom.groupdocs.annotation.models.Rectangle;importcom.groupdocs.annotation.models.annotationmodels.AreaAnnotation;try(Annotatorannotator=newAnnotator("contract.docx")){AreaAnnotationarea=newAreaAnnotation();area.setBox(newRectangle(100,100,200,100));area.setBackgroundColor(65535);area.setMessage("Please confirm these figures");area.setPageNumber(0);area.setOpacity(0.7);annotator.add(area);annotator.save("annotation-add-area.pdf");}
contract.docx is the sample file used in this example. Click here to download it.
Colours are 32-bit integers rather than Color objects — 65535 is yellow. setPageNumber counts from zero, so the first page is 0.
Highlight text
A highlight annotation is bounded by four corner points rather than a rectangle, because a highlight can follow text that wraps across lines and is not always a neat box.
importcom.groupdocs.annotation.Annotator;importcom.groupdocs.annotation.models.Point;importcom.groupdocs.annotation.models.annotationmodels.HighlightAnnotation;importjava.util.Arrays;importjava.util.List;try(Annotatorannotator=newAnnotator("contract.docx")){// Corner points of the region to highlight
List<Point>points=Arrays.asList(newPoint(80,730),newPoint(240,730),newPoint(80,710),newPoint(240,710));HighlightAnnotationhighlight=newHighlightAnnotation();highlight.setPoints(points);highlight.setBackgroundColor(65535);highlight.setMessage("Check this clause against the contract");highlight.setPageNumber(0);highlight.setOpacity(0.5);annotator.add(highlight);annotator.save("annotation-highlight.pdf");}
contract.docx is the sample file used in this example. Click here to download it.
get returns the annotations already on a document — how you load an existing review into your own UI.
importcom.groupdocs.annotation.Annotator;importcom.groupdocs.annotation.models.Rectangle;importcom.groupdocs.annotation.models.annotationmodels.AnnotationBase;importcom.groupdocs.annotation.models.annotationmodels.AreaAnnotation;importjava.util.List;// Annotate first, so there is something to read back
try(Annotatorannotator=newAnnotator("contract.docx")){AreaAnnotationarea=newAreaAnnotation();area.setBox(newRectangle(100,100,200,100));area.setMessage("Please confirm these figures");area.setPageNumber(0);annotator.add(area);annotator.save("annotation-extract.pdf");}try(Annotatorannotator=newAnnotator("annotation-extract.pdf")){List<AnnotationBase>annotations=annotator.get();System.out.println("Annotations found: "+annotations.size());for(AnnotationBaseannotation:annotations){System.out.println(annotation.getClass().getSimpleName()+" on page "+annotation.getPageNumber()+": "+annotation.getMessage());}}
contract.docx is the sample file used in this example. Click here to download it.
GroupDocs.Annotation supports eighteen annotation types, threaded replies for multi-round review, updating and removing existing annotations, importing and exporting annotations as XML, page previews, and document version history.