Skip to main content

Annotations in the PDF Viewer

  • 7 minutes to read

The PDF Viewer allows you to add interactive elements (annotations) such as notes, highlights, or text boxes directly to a PDF document. You can create and delete annotations, edit their content or flatten them, add related comments and reviews. All these capabilities allow you to add context or feedback directly to PDF files and thus simplify collaboration during document reviews.

MarkupAnnotations

Note

The PDF Viewer ignores the No Rotate and No Zoom annotation flags.

Annotation Types

Text Markup Annotations

Highlight

Highlight text and leave comments about it.

PDF Viewer - Text Markup - Highlight

Strikethrough

Strike out text and leave comments about it.

PDF Viewer - Text Markup - Strikethrough

Underline

Underline text and leave comments about it.

PDF Viewer - Text Markup

Text Annotations

Sticky Notes

Add a comment annotation to a specific location in a PDF document.

PDF Viewer - Sticky note

Free Text Annotations

Insert a text box at a specific location in a PDF document.

pdf-viewer-free-text-example

Callouts

Insert a combination of a text box and a pointer line to a specific location in a PDF document.

pdf-viewer-callout-example

Create an Annotation

User Interface

Use commands on the Comment Ribbon page to create text markup annotations, sticky notes, free text, and callouts.

CommentToolbar

Text Markup

Enable one of the selection tools in the Text group and select the text that should have an annotation:

HighlightText

You can also add text markup annotations for the selected text from the context menu:

MarkupContextMenu

Text Annotation (Sticky Note, Free Text, Callout)

Click Sticky Note, Free Text, or Callout in the Ribbon and select a location in a PDF document to place the element:

PDF Viewer - Add text annotation cursor

Tip

Use the PdfViewer.CursorMode property to change the viewer’s cursor mode in code.

Code

The following API allows you to add annotations in code:

Method Description
PdfViewer.HighlightSelectedText Highlights the selected text.
PdfViewer.StrikethroughSelectedText Strikes through the selected text.
PdfViewer.UnderlineSelectedText Underlines the selected text.
PdfViewer.AddStickyNote Adds a sticky note at the specified position.

The code below highlights the selected text and adds a sticky note.

using System.Drawing;
using System.Windows.Forms;

// Load a document
pdfViewer.LoadDocument("..\\..\\Demo.pdf");

// Select a text to highlight
pdfViewer.FindText("PDF Viewer");

// Highlight selected text
pdfViewer.HighlightSelectedText();

// Add a sticky note
pdfViewer.AddStickyNote(new PdfDocumentPosition(1, new PdfPoint(29, 568)),
    "Comment", Color.Crimson);

You can also use PDF Facade API to access and manage annotations. This API implements additional functionality, but is only available as part of DevExpress Office File API* or Universal subscription. Navigate to the following section for additional information and a code sample: Use PDF Facade API to Manage Annotations.

Change Markup Tool Settings

User Interface

You can change the default settings for annotation tools. Click the drop-down arrow in the corresponding annotation tool, and specify the color and opacity.

MarkupToolColorPicker

Code

To access the markup tool settings in code, use the PdfViewer.MarkupToolsSettings property.

The following code sample specifies the default sticky note and text highlight settings:

PdfMarkupToolsSettings markupToolsSettings = pdfViewer.MarkupToolsSettings;
markupToolsSettings.StickyNoteIconName = PdfTextAnnotationIconName.Help;
markupToolsSettings.StickyNoteColor = Color.SkyBlue;

markupToolsSettings.TextHighlightColor = Color.IndianRed;
markupToolsSettings.TextHighlightDefaultSubject = "Spelling";

Edit Annotations

Right-click the annotation in the document (or in the Comments navigation page) and select Properties:

PDF Viewer Annotation - Invoke the Properties dialog

Use the invoked Annotation Properties dialog to edit the annotation (text and border colors, opacity, text, and so on). Available properties depend on the annotation type:

PDF Viewer Annotation - Properties dialog

Click Set as Default to change default settings for all new annotations of this type.

Users can move Sticky Notes, Free Text, and Callouts:

pdf-viewer-move-annotation

Users can move pointer lines associated with Callout annotations:

pdf-viewer-callout-move-pointer

Users can resize Free Text and Callout annotations:

pdf-viewer-annotation-free-text-resize

Tip

When the Comments panel is opened, double-click a sticky note to edit its associated comment.

Add Replies and Reviews

The Comments navigation pane (Alt + C) shows all document annotations. You can use it to add replies and set review statuses for annotations.

Comments pane

Select an annotation on the pane, enter text in the invoked editor, and click Reply to add the reply to the annotation:

Add reply

To specify the review status, right-click an annotation, select Set Status, and choose an option. Select None to retract your response:

Add review

Remove Annotations

Right-click an annotation in the Comments navigation pane and select Delete in the context menu to remove the annotation:

Delete Annotation from Comments Pane

Users can also click an annotation in a document and press Delete or right-click and choose Delete from the context menu:

Delete Annotation from context menu

Annotation Events

The table below lists the PdfViewer events that occur in response to various annotation actions:

AnnotationCreating
Fires before the annotation is created.
AnnotationCreated
Occurs after an annotation is created.
AnnotationGotFocus
Occurs when an annotation receives input focus.
AnnotationLostFocus
Occurs when an annotation loses input focus.
AnnotationChanging
Fires before the annotation is changed.
AnnotationChanged
Fires after an annotation has been changed.
AnnotationDeleting
Fires before an annotation is deleted from a page.
AnnotationDeleted
Occurs after the annotation is deleted.
ReplyCreated
Occurs after the annotation reply is created in the Comments Panel.
ReplyChanged
Occurs after the annotation reply is changed in the Comments Panel.
ReplyDeleted
Occurs after the annotation reply is deleted in the Comments Panel.

Use PDF Facade API to Manage Annotations

Important

Functionality in this section is available as part of the DevExpress Office File API or Universal Subscription. Refer to the DevExpress Subscription page for pricing information.

The PDF Facade API contains additional annotation types you can manage in code: Link, Rubber Stamp, Caret, File Attachment, Ink, and others. You can use the PdfDocumentFacade class to organize these annotations: create, delete, edit their content, flatten, add related comments and reviews.

The following code sample creates a file attachment and a rubber stamp annotation:

Annotations created with Facade API

pdfViewer.LoadDocument("Document.pdf");

// Access the first page properties
PdfDocumentFacade documentFacade = pdfViewer.GetDocumentFacade();
PdfPageFacade pageFacade = documentFacade.Pages[0];

// Define a rubber stamp rectangle
PdfRectangle rubberStampRectangle = new PdfRectangle(491, 727, 591, 773); 

// Create a "Draft" rubber stamp annotation
PdfRubberStampAnnotationFacade rubberStamp =
    pageFacade.AddRubberStampAnnotation(rubberStampRectangle,
    PdfRubberStampAnnotationIconName.Draft);
rubberStamp.Author = "Jesse Faden";
rubberStamp.Contents = "Made in PDF Document API";

// Define a file attachment area 
PdfPoint attachmentPoint = new PdfPoint(29, 568);

// Specify attachment data
PdfFileAttachment attachment = new PdfFileAttachment()
{
    CreationDate = DateTime.Now,
    Description = "This is my attached file",
    FileName = "MyAttach.txt",
    Data = File.ReadAllBytes("..\\..\\Attachment.txt")
};

// Create a file attachment annotation
PdfFileAttachmentAnnotationFacade pdfFileAttachment =
    pageFacade.AddFileAttachmentAnnotation(attachmentPoint, attachment,
    PdfFileAttachmentAnnotationIconName.PaperClip);
pdfFileAttachment.Author = "Nancy Skywalker";
pdfFileAttachment.Contents = "Additional Content";

Refer to the following article for more information on how to use PDF Facade API to manage annotations: How to: Use PDF Facade API to Manage Annotations.

See Also