Developer Tools
|
Office Productivity Applications
|
Enterprise Solutions
|
|||||||||||||||||||||||







Annotations and forms are two popular ways of providing interactivity in PDF documents. In this article, we will focus on annotations. First, we will see how to create annotations and then move on to modifying and deleting them.
There are several types of PDF annotations. Some use icons or shapes and display text in a popup window. Some others play multimedia objects. Some even display text directly on the page.
A text annotation draws attention to itself using an icon on the page. When the end-user clicks the icon, the PDF viewer application opens up a popup window displaying more information.

Here is how you add an annotation to a PDF page.
// Create a new document (automatically adds page 1) PDFDocument doc1 = new PDFDocument("your-license-key"); doc1.Load("FREE-PDF-READER.pdf"); // Create a text annotation PDFTextAnnot ta1 = new PDFTextAnnot( 0.7f, // x-coordinate 2.6f, // y-coordinate Color.Orange); // Color ta1.Title = "My Review"; ta1.Subject = "1. Date"; ta1.Content = "Please update the date"; ta1.AnnotIcon = PDFTextAnnotIcon.Comment; // Add annotation to page 1 doc1.AddAnnot(ta1); // Save document to file doc1.Save("text_annotation_demo.pdf"); doc1.Close();
To create a text annotation, call the constructor
of the PDFTextAnnot() class. You will have
to specify the annotation location (known as the
annotation rectangle) and some other properties.
There is also a choice of icons for the annotation.

A stamp annotation allows you to almost literally "rubber-stamp" a page. Several types of stamps are available - from the forbidding "CONFIDENTIAL" to the humble "DRAFT".
// Create a new document (automatically adds page 1) PDFDocument doc1 = new PDFDocument("your-license-key"); doc1.Load("FREE-PDF-READER.pdf"); // Create a stamp annotation PDFStampAnnot sa1 = new PDFStampAnnot(new RectangleF(3f, 0.2f, 2, 1), Color.Gold); sa1.Stamp = PDFAnnotStamps.Approved; sa1.Content = "Here's is my seal of approval. Take it;-)"; sa1.Title = "V. Subhash"; sa1.Subject = "My review"; // Add annotation to page 1 doc1.AddAnnot(sa1); // Save document to file doc1.Save("stamp_annotation_demo.pdf"); doc1.Close();

The annotation type that is most popular is the humble link annotation. A link annotation is used to add interactivity to a page region. When the user clicks the page region, the viewer applications changes the view to another page in the same document or even in another document.
You can also make an link annotation link to URI. When the end-user
clicks the region, the viewer application will make the OS shell to
resolve the http: or
mailto: address linked by the annotation. In other words, a
browser window/tab or a "new message" mail client window will be opened.

// Create a document and add the annotations PDFDocument doc1 = new PDFDocument("your-license-key"); doc1.WriteText("Link annotation ====>", 1f, 1f); doc1.Brush.Color = Color.Blue; doc1.WriteText("www.gnostice.com", 2.3f, 1f); doc1.Brush.Color = Color.Black; // Create a link annotation PDFLinkAnnot la1 = new PDFLinkAnnot(new RectangleF(2.2f, 0.9f, 1.2f, 0.3f)); la1.AddActionURI("http://www.gnostice.com"); // Add annotation to page 1 doc1.AddAnnot(la1); // Save document to file doc1.Save("link_annotation_demo.pdf"); doc1.Close();
A link annotation can also be used to make the viewer application execute a JavaScript script.

// Load an existing document PDFDocument doc1 = new PDFDocument("your-license-key"); doc1.Load("FREE-PDF-READER.pdf"); // Render text that appears in the annotation rectangle doc1.WriteText("(JS) Link annotation ====>", 1f, 0.5f); doc1.Brush.Color = Color.Blue; doc1.WriteText("Show when this doc was created", 2.4f, 0.5f); doc1.Brush.Color = Color.Black; // Place a link annotation in the region of the text PDFLinkAnnot la1 = new PDFLinkAnnot(new RectangleF(2.2f, 0.3f, 2f, 0.5f)); la1.AddActionJavaScript("app.alert(this.info['creationDate'])"); doc1.AddAnnot(la1); // Save document to file doc1.Save("link_annotation_demo.pdf"); doc1.Close();

// Load an existing PDF document PDFDocument doc1 = new PDFDocument("your-license-key"); doc1.Load("FREE-PDF-READER.pdf"); // Create a squiggly annotation PDFMarkupAnnot sa1 = new PDFMarkupAnnot(); sa1.MarkupStyle = PDFMarkupStyle.Squiggly; sa1.Content = "Is the 'G' in 'Gnostice' silent?"; sa1.Title = "My review"; sa1.Subject = "Document review"; sa1.SetQuadPoints(new RectangleF(1.38f,3.35f,0.52f,0.3f)); sa1.FillColor = Color.Red; // Add annotation to page 1 doc1.AddAnnot(sa1); // Save document to file doc1.Save("link_annotation_demo.pdf"); doc1.Close();

// Load an existing PDF document PDFDocument doc1 = new PDFDocument("your-license-key"); doc1.Load("FREE-PDF-READER.pdf"); // Create a squiggly annotation PDFMarkupAnnot sa1 = new PDFMarkupAnnot(); sa1.MarkupStyle = PDFMarkupStyle.Highlight; sa1.Content = "This is important - not the usual blah blah blah."; sa1.Title = "Instructions"; sa1.Subject = "For end-users"; sa1.FillColor = Color.Lime; sa1.SetQuadPoints(new RectangleF(1f,3f, 4.1f, 0.25f)); // Add annotation to page 1 doc1.AddAnnot(sa1); // Save document to file doc1.Save("link_annotation_demo.pdf"); doc1.Close();
---o0O0o---
| Our Developer Tools | |
|---|---|
eDocEngine VCLA Delphi/C++Builder component suite for creating documents in over 20 formats and also export reports from popular Delphi reporting tools. |
PDFtoolkit VCLA Delphi/C++Builder component suite to edit, enhance, view, print, merge, split, encrypt, annotate, and bookmark PDF documents. |
XtremePDFConverter VCLA Delphi/C++Builder component to intelligently convert PDF to user-friendly Word RTF documents. |
|
PDFOne .NETA .NET PDF component suite to create, edit, view, print, reorganize, encrypt, annotate, and bookmark PDF documents in .NET applications. |
XtremeDocumentStudio .NETMulti-format document-processing component suite for .NET developers |
PDFOne (for Java™)A Java™ PDF component suite to create, edit, view, print, reorganize, encrypt, annotate, bookmark PDF documents in Java™ applications. |
XtremeFontEngine (for Java)Java font engine to render glyphs from Type 1, Type 2 (CFF), and TrueType fonts |
| Our Office Productivity Applications |
|---|
Free PDF ReaderA free, fast, and portable application for viewing, printing and converting PDF documents. |
| Privacy | Legal | Feedback | Newsletter | Resellers | © 2002-2013 Gnostice Information Technologies Private Limited. All rights reserved. |
This site is best viewed on a screen with minimum resolution of 1152 x 864 pixels. Windows XP users are advised to use Microsoft ClearType Tuning for optimal experience. Also, please use the latest version of a standards-compliant browser such as Firefox, Opera, or Dragon (Chromium).