Skip to main content
All docs
V23.2

PdfFreeTextAnnotationFacade Class

Contains members used to manage free text annotations without access to their inner structure.

Namespace: DevExpress.Pdf

Assembly: DevExpress.Pdf.v23.2.Core.dll

NuGet Package: DevExpress.Pdf.Core

Declaration

public class PdfFreeTextAnnotationFacade :
    PdfMarkupAnnotationFacade

The following members return PdfFreeTextAnnotationFacade objects:

Remarks

Create Free Text Annotations

Create Text Box Annotations

The code sample below creates a free text annotation:

free text

using (PdfDocumentProcessor processor = new PdfDocumentProcessor())
{
    // Load a document
    processor.LoadDocument("..\\..\\Document.pdf");

    // Access the first page properties
    PdfPageFacade pageFacade = processor.DocumentFacade.Pages[0];

    // Define an annotation area
    PdfRectangle rectangle = new PdfRectangle(663, 526, 763, 576);

    // Create a free text annotation in this area
    PdfFreeTextAnnotationFacade freeText =
       pageFacade.AddFreeTextAnnotation(rectangle, "Free Text Annotation");

    // Specify annotation parameters
    freeText.Author = "Nancy Davolio";
    freeText.BorderWidth = 2;

    // Save the result
    processor.SaveDocument("..\\..\\Result.pdf");
}

Create Callout Annotations

Call a free text annotation’s SetCallout method to add a callout line to the annotation. The method call sets the annotation’s Intent property to FreeTextCallout.

The code sample below creates a callout annotation pointed at a specific phrase:

callout

using (PdfDocumentProcessor processor = new PdfDocumentProcessor())
{
    // Load a document
    processor.LoadDocument("..\\..\\Document.pdf");

    // Access the first page properties
    PdfPageFacade pageFacade = processor.DocumentFacade.Pages[0];
    PdfRectangle calloutRectangle;

    // Find the target phrase in the document
    string calloutText = "Evaluation";
    PdfTextSearchResults searchResults = processor.FindText(calloutText);

    if (searchResults.Status == PdfTextSearchStatus.Found)
    {
        // Obtain the target phrase rectangle
        calloutRectangle = searchResults.Rectangles[0].BoundingRectangle;

        // Define an annotation area
        PdfRectangle rectangle = new PdfRectangle(663, 526, 763, 576);

        // Create a free text annotation in this area
        PdfFreeTextAnnotationFacade freeText =
            pageFacade.AddFreeTextAnnotation(rectangle, "Free Text Annotation");

        // Specify annotation parameters
        freeText.Author = "Nancy Davolio";

        // Add a callout line pointed at the center of the target phrase
        freeText.SetCallout(PdfAnnotationLineEndingStyle.OpenArrow, calloutRectangle.Center);
    }

    // Save the result
    processor.SaveDocument("..\\..\\Result.pdf");
}

Create Typewriter Annotations

Set a free text annotation’s Intent property to FreeTextTypewriter to convert the annotation to a typewriter (click-to-type) object. This object has no border, callout line, or padding between the text and annotation bounds.

The code sample below creates a typewriter annotation:

typewriter annotation

using (PdfDocumentProcessor processor = new PdfDocumentProcessor())
{
    // Load a document
    processor.LoadDocument("..\\..\\Document.pdf");

    // Access the first page properties
    PdfPageFacade pageFacade = processor.DocumentFacade.Pages[0];

    // Define an annotation area
    PdfRectangle rectangle = new PdfRectangle(663, 526, 763, 576);

    // Create a free text annotation
    PdfFreeTextAnnotationFacade freeText =
        pageFacade.AddFreeTextAnnotation(rectangle, "Free Text Annotation");

    // Specify annotation parameters
    freeText.Author = "Nancy Davolio";
    freeText.Intent = PdfFreeTextAnnotationIntent.FreeTextTypewriter;

    // Save the result
    processor.SaveDocument("..\\..\\Result.pdf");
}

Edit Free Text Annotations

The PdfPageFacade.Annotations property returns all page annotation properties. You can filter free text annotation properties, cast them to the PdfFreeTextAnnotationFacade class, and use class properties to modify annotation parameters.

The code sample below changes border parameters for all free text annotations:

free text edited

using DevExpress.Pdf;
using System.Linq;
//...
using (PdfDocumentProcessor processor = new PdfDocumentProcessor())
{
    // Load a document
    processor.LoadDocument("..\\..\\Document.pdf");

    // Access the first page properties
    PdfPageFacade pageFacade = processor.DocumentFacade.Pages[0];

    // Retrieve all free text annotations
    var freeTextAnnotations = pageFacade.Annotations.Where
            (annotation => annotation.Type == PdfAnnotationType.FreeText);
    foreach (PdfFreeTextAnnotationFacade freeText in freeTextAnnotations) 
    {
        // Change the border parameters
        freeText.BorderWidth = 2;
        freeText.BorderStyle = PdfBorderStyle.Dash;
        // Change the font color
        freeText.FontColor = new PdfRGBColor(0.90, 0.00, 0.30);
    }
    // Save the result
    processor.SaveDocument("..\\..\\Result.pdf");
}

Flatten Free Text Annotations

Call one of the following methods to flatten an annotation:

Method Description
PdfDocumentFacade.FlattenAnnotations Flattens document annotations.
PdfPageFacade.FlattenAnnotations Flattens annotations of a specific page.
PdfAnnotationFacade.Flatten() Flattens a specific annotation.

The code sample below flattens all free text annotations on the first page:

using (PdfDocumentProcessor processor = new PdfDocumentProcessor())
{
    // Load a document
    processor.LoadDocument("..\\..\\Document.pdf");

    // Access the first page properties
    PdfPageFacade pageFacade = processor.DocumentFacade.Pages[0];

    // Flatten all free text annotations
    page.FlattenAnnotations(PdfAnnotationType.FreeText);
}

Remove Free Text Annotations

Call the PdfAnnotationFacade.Remove() method to remove an annotation. The code sample below removes all free text annotations from the first page:

using DevExpress.Pdf;
using System.Linq;

using (PdfDocumentProcessor processor = new PdfDocumentProcessor())
{

  // Load a document
  processor.LoadDocument("..\\..\\Document.pdf");

  // Access the first page properties
  PdfPageFacade pageFacade = processor.DocumentFacade.Pages[0];

  // Retrieve all free text annotations
  var freeTextAnnotations = page.Annotations.Where
    (annotation => annotation.Type == PdfAnnotationType.FreeText).ToList();

  // Remove all free text annotations
  foreach (PdfFreeTextAnnotationFacade freeText in freeTextAnnotations)
  {
      freeText.Remove();
  }
}

Inheritance

See Also