This sample shows how to create PDF annotations.
PDFsharp supports the creation of the following annotations:
- Text annotations
- Link annotations
- Rubber stamp annotations
PDF Output File
See the PDF file created by this sample:
output.pdf (3 kB)
Note: the red rubber stamp shows localized resources of Adobe Reader or placeholder if the resource cannot be found
Screen Shots
Here is a sample screen shot taken on a German Windows version:
Note: the red rubber stamp shows the German text "Geheimsache" instead of "Top Secret" because localized resources of Adobe Reader are shown here
Source Code
The first text annotation:
// Create a PDF text annotation
PdfTextAnnotation textAnnot = new PdfTextAnnotation();
textAnnot.Title = "This is the title";
textAnnot.Subject = "This is the subject";
textAnnot.Contents = "This is the contents of the annotation.\rThis is the 2nd line.";
textAnnot.Icon = PdfTextAnnotationIcon.Note;
gfx.DrawString("The first text annotation", font, XBrushes.Black, 30, 50, XStringFormats.Default);
// Convert rectangle from world space to page space. This is necessary because the annotation is
// placed relative to the bottom left corner of the page with units measured in point.
XRect rect = gfx.Transformer.WorldToDefaultPage(new XRect(new XPoint(30, 60), new XSize(30, 30)));
textAnnot.Rectangle = new PdfRectangle(rect);
// Add the annotation to the page
page.Annotations.Add(textAnnot);
The second text annotation (opened):
// Create another PDF text annotation which is open and transparent
textAnnot = new PdfTextAnnotation();
textAnnot.Title = "Annotation 2 (title)";
textAnnot.Subject = "Annotation 2 (subject)";
textAnnot.Contents = "This is the contents of the 2nd annotation.";
textAnnot.Icon = PdfTextAnnotationIcon.Help;
textAnnot.Color = XColors.LimeGreen;
textAnnot.Opacity = 0.5;
textAnnot.Open = true;
gfx.DrawString("The second text annotation (opened)", font, XBrushes.Black, 30, 140, XStringFormats.Default);
rect = gfx.Transformer.WorldToDefaultPage(new XRect(new XPoint(30, 150), new XSize(30, 30)));
textAnnot.Rectangle = new PdfRectangle(rect);
// Add the 2nd annotation to the page
page.Annotations.Add(textAnnot);
Finally add a rubber stamp annotation:
// Create a so called rubber stamp annotation. I'm not sure if it is useful, but at least
// it looks impressive...
PdfRubberStampAnnotation rsAnnot = new PdfRubberStampAnnotation();
rsAnnot.Icon = PdfRubberStampAnnotationIcon.TopSecret;
rsAnnot.Flags = PdfAnnotationFlags.ReadOnly;
rect = gfx.Transformer.WorldToDefaultPage(new XRect(new XPoint(100, 400), new XSize(350, 150)));
rsAnnot.Rectangle = new PdfRectangle(rect);
// Add the rubber stamp annotation to the page
page.Annotations.Add(rsAnnot);
PDF supports some more pretty types of annotations like PdfLineAnnotation, PdfSquareAnnotation, PdfCircleAnnotation, PdfMarkupAnnotation (with the subtypes PdfHighlightAnnotation, PdfUnderlineAnnotation, PdfStrikeOutAnnotation, and PdfSquigglyAnnotation), PdfSoundAnnotation, or PdfMovieAnnotation.
If you need one of them, feel encouraged to implement it. It is quite easy.
Note: The samples on this site usually show and discuss code snippets only. The complete source code of the samples with solutions for Visual Studio is available from the
download area on CodePlex.