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.
import{Annotator}from'@groupdocs/groupdocs.total';importjavafrom'java';constAreaAnnotation=java.import('com.groupdocs.annotation.models.annotationmodels.AreaAnnotation');constRectangle=java.import('com.groupdocs.annotation.models.Rectangle');constannotator=newAnnotator('contract.docx');constarea=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');annotator.close();
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.
import{Annotator}from'@groupdocs/groupdocs.total';importjavafrom'java';constHighlightAnnotation=java.import('com.groupdocs.annotation.models.annotationmodels.HighlightAnnotation');constPoint=java.import('com.groupdocs.annotation.models.Point');constArrayList=java.import('java.util.ArrayList');constannotator=newAnnotator('contract.docx');// Corner points of the region to highlight
constpoints=newArrayList();points.add(newPoint(80,730));points.add(newPoint(240,730));points.add(newPoint(80,710));points.add(newPoint(240,710));consthighlight=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');annotator.close();
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.
import{Annotator}from'@groupdocs/groupdocs.total';importjavafrom'java';constAreaAnnotation=java.import('com.groupdocs.annotation.models.annotationmodels.AreaAnnotation');constRectangle=java.import('com.groupdocs.annotation.models.Rectangle');// Annotate first, so there is something to read back
constannotator=newAnnotator('contract.docx');constarea=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');annotator.close();constreader=newAnnotator('annotation-extract.pdf');constannotations=reader.get();console.log('Annotations found: '+annotations.size());for(leti=0;i<annotations.size();i++){constitem=annotations.get(i);console.log(item.getClass().getSimpleName()+' on page '+item.getPageNumber()+': '+item.getMessage());}reader.close();
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.