AnnotationTypes.cs
- //
- // This code is part of Document Solutions for PDF demos.
- // Copyright (c) MESCIUS inc. All rights reserved.
- //
- using System;
- using System.IO;
- using System.Drawing;
- using GrapeCity.Documents.Pdf;
- using GrapeCity.Documents.Text;
- using GrapeCity.Documents.Pdf.Annotations;
-
- namespace DsPdfWeb.Demos.Basics
- {
- // Shows how to add annotations to a PDF document.
- public class AnnotationTypes
- {
- public int CreatePDF(Stream stream)
- {
- var doc = new GcPdfDocument();
- var page = doc.NewPage();
- var g = page.Graphics;
- // User names for annotations' authors:
- var user1 = "Jaime Smith";
- var user2 = "Jane Donahue";
-
- var noteWidth = 72 * 4;
- var gap = 8;
-
- var rc = Common.Util.AddNote(
- "This sample demonstrates some types of annotations that can be created with DsPdf.\n" +
- "Note that some annotation types may not display in certain viewers (such as built-in browser viewers)." +
- "To see all annotations on this page, open it in Acrobat Reader or other full-featured PDF viewer.",
- page);
-
- // Text annotation:
- var ip = new PointF(rc.X, rc.Bottom + gap);
- rc = Common.Util.AddNote(
- "A red text annotation is placed to the right of this note.",
- page, new RectangleF(ip.X, ip.Y, noteWidth, 100));
- var textAnnot = new TextAnnotation()
- {
- UserName = user1,
- Contents = "This is annotation 1, a red one.",
- Rect = new RectangleF(rc.Right, rc.Top, 72 * 2, 72),
- Color = Color.Red,
- };
- page.Annotations.Add(textAnnot);
- // A reply to previous annotation:
- var textAnnotReply = new TextAnnotation()
- {
- UserName = user2,
- Contents = "This is a reply to the first annotation.",
- Rect = new RectangleF(rc.Right, rc.Top, 72 * 2, 72),
- ReferenceAnnotation = textAnnot,
- ReferenceType = AnnotationReferenceType.Reply,
- };
- page.Annotations.Add(textAnnotReply);
-
- // An initially open text annotation:
- ip = new PointF(rc.X, rc.Bottom + gap);
- rc = Common.Util.AddNote(
- "A green text annotation that is initially open is placed to the right of this note.",
- page, new RectangleF(ip.X, ip.Y, noteWidth, 100));
- var textAnnotOpen = new TextAnnotation()
- {
- Open = true,
- UserName = user1,
- Contents = "This is an initially open annotation (green).",
- Rect = new RectangleF(rc.Right, rc.Top, 72 * 2, 72),
- Color = Color.Green,
- };
- page.Annotations.Add(textAnnotOpen);
-
- // A free text annotation (shows directly on page):
- ip = new PointF(rc.X, rc.Bottom + gap);
- rc = Common.Util.AddNote(
- "A blue free text annotation is placed below and to the right, with a callout going from it to this note.",
- page, new RectangleF(ip.X, ip.Y, noteWidth, 100));
- var freeAnnot = new FreeTextAnnotation()
- {
- Rect = new RectangleF(rc.Right + 18, rc.Bottom + 9, 72 * 2, 72),
- CalloutLine = new PointF[]
- {
- new PointF(rc.Left + rc.Width / 2, rc.Bottom),
- new PointF(rc.Left + rc.Width / 2, rc.Bottom + 9 + 36),
- new PointF(rc.Right + 18, rc.Bottom + 9 + 36),
- },
- LineWidth = 1,
- LineEndStyle = LineEndingStyle.OpenArrow,
- LineDashPattern = new float[] { 8, 4 },
- Contents = "This is a free text annotation with a callout line going to the note on the left.",
- Color = Color.LightSkyBlue,
- };
- page.Annotations.Add(freeAnnot);
-
- // Another free text annotation, with some rich text inside:
- ip = new PointF(rc.X, freeAnnot.Rect.Bottom + gap);
- var freeRichAnnot = new FreeTextAnnotation()
- {
- Rect = new RectangleF(ip.X - 144, ip.Y, 72 * 5, 72),
- LineWidth = 1,
- Color = Color.LightSalmon,
- RichText =
- "<body><p>This is another <i>free text annotation</i>, with <b><i>Rich Text</i></b> content.</p>" +
- "<p>Even though a <b>free text</b> annotation displays text directly on a page, " +
- "as other annotations it can be placed outside the page's bounds.</p></body>"
- };
- page.Annotations.Add(freeRichAnnot);
-
- // A square annotation around a note:
- ip = new PointF(rc.X, freeRichAnnot.Rect.Bottom + gap * 2);
- rc = Common.Util.AddNote(
- "A square annotation drawn with a 3pt wide orange line around this note has a rich text associated with it.",
- page, new RectangleF(ip.X, ip.Y, noteWidth, 100));
-
- rc.Inflate(8, 8);
- var squareAnnot = new SquareAnnotation()
- {
- UserName = user2,
- Rect = rc,
- LineWidth = 3,
- Color = Color.Orange,
- RichText =
- "<body><p>This <b><i>rich text</i></b> is associated with the square annotation around a text note.</p></body>"
- };
- page.Annotations.Add(squareAnnot);
-
- // Done:
- doc.Save(stream);
- return doc.Pages.Count;
- }
- }
- }
-