Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
The following code snippet also work with Aspose.PDF.Drawing library.
A Text Annotation is an annotation attached to a specific location in a PDF document. When closed, the annotation is displayed as an icon; when opened, it should display a pop-up window containing the note text in the font and size chosen by the reader.
Annotations are contained by the Annotations collection of a particular Page. This collection contains the annotations for that individual page only; every page has its own Annotations collection.
To add an annotation to a particular page, add it to that page’s Annotations collection with the Add method.
The following code snippet shows you how to add an annotation in a PDF page.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddTextAnnotationToPdf()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "AddAnnotation.pdf"))
{
// Create text annotation
var textAnnotation = new Aspose.Pdf.Annotations.TextAnnotation(document.Pages[1], new Aspose.Pdf.Rectangle(200, 400, 400, 600));
textAnnotation.Title = "Sample Annotation Title";
textAnnotation.Subject = "Sample Subject";
textAnnotation.SetReviewState(Aspose.Pdf.Annotations.AnnotationState.Accepted);
textAnnotation.Contents = "Sample contents for the annotation";
textAnnotation.Open = true;
textAnnotation.Icon = Aspose.Pdf.Annotations.TextIcon.Key;
// Set border for the annotation
var border = new Aspose.Pdf.Annotations.Border(textAnnotation);
border.Width = 5;
border.Dash = new Aspose.Pdf.Annotations.Dash(1, 1);
textAnnotation.Border = border;
textAnnotation.Rect = new Aspose.Pdf.Rectangle(200, 400, 400, 600);
// Add annotation to the annotations collection of the page
document.Pages[1].Annotations.Add(textAnnotation);
// Save PDF document
document.Save(dataDir + "AddAnnotation_out.pdf");
}
}
A Pop-up Annotation displays text in a pop-up window for entry and editing. It shall not appear alone but is associated with a markup annotation, its parent annotation, and shall be used for editing the parent’s text.
It shall have no appearance stream or associated actions of its own and shall be identified by the Popup entry in the parent’s annotation dictionary.
The following code snippet shows you how to add Popup Annotation in a PDF page using an example of adding a parent’s Line annotation.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddLineAnnotation()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "Appartments.pdf"))
{
// Create Line Annotation
var lineAnnotation = new Aspose.Pdf.Annotations.LineAnnotation(
document.Pages[1],
new Aspose.Pdf.Rectangle(550, 93, 562, 439),
new Aspose.Pdf.Point(556, 99), new Aspose.Pdf.Point(556, 443))
{
Title = "John Smith",
Color = Aspose.Pdf.Color.Red,
Width = 3,
StartingStyle = Aspose.Pdf.Annotations.LineEnding.OpenArrow,
EndingStyle = Aspose.Pdf.Annotations.LineEnding.OpenArrow,
Popup = new Aspose.Pdf.Annotations.PopupAnnotation(document.Pages[1], new Aspose.Pdf.Rectangle(842, 124, 1021, 266))
};
// Add annotation to the page
document.Pages[1].Annotations.Add(lineAnnotation);
// Save PDF document
document.Save(dataDir + "AddLineAnnotation_out.pdf");
}
}
A free text annotation displays text directly on the page. The PdfContentEditor.CreateFreeText method allows creating this type of annotation. In the following snippet, we add free text annotation above the first occurrence of the string.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddFreeTextAnnotationDemo()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "pdf-sample.pdf"))
{
var pdfContentEditor = new Aspose.Pdf.Facades.PdfContentEditor(document);
// Assuming tfa is an instance of TextFragmentAbsorber or similar
var tfa = new Aspose.Pdf.Text.TextFragmentAbsorber();
tfa.Visit(document.Pages[1]);
if (tfa.TextFragments.Count <= 0)
{
return;
}
// Define the rectangle for the free text annotation
var rect = new System.Drawing.Rectangle
{
X = (int)tfa.TextFragments[1].Rectangle.LLX,
Y = (int)tfa.TextFragments[1].Rectangle.URY + 5,
Height = 18,
Width = 100
};
// Create free text annotation
pdfContentEditor.CreateFreeText(rect, "Free Text Demo", 1); // Last param is the page number
// Save PDF document
pdfContentEditor.Save(dataDir + "pdf-sample-0.pdf");
}
}
For a more flexible configuration of annotation in the PDF document, Aspose.PDF for .NET provides Callout property of FreeTextAnnotation class which allows specifying Array of point of callout line. The following code snippet show, how to use this functionality:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddFreeTextCalloutAnnotation()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Create PDF document
using (var document = new Aspose.Pdf.Document())
{
// Add page
var page = document.Pages.Add();
// Create default appearance for the annotation
var da = new Aspose.Pdf.Annotations.DefaultAppearance();
da.TextColor = System.Drawing.Color.Red;
da.FontSize = 10;
// Create free text annotation with callout
var fta = new Aspose.Pdf.Annotations.FreeTextAnnotation(page, new Aspose.Pdf.Rectangle(422.25, 645.75, 583.5, 702.75), da);
fta.Intent = Aspose.Pdf.Annotations.FreeTextIntent.FreeTextCallout;
fta.EndingStyle = Aspose.Pdf.Annotations.LineEnding.OpenArrow;
fta.Callout = new Aspose.Pdf.Point[]
{
new Aspose.Pdf.Point(428.25, 651.75),
new Aspose.Pdf.Point(462.75, 681.375),
new Aspose.Pdf.Point(474, 681.375)
};
// Add the annotation to the page
page.Annotations.Add(fta);
// Set rich text for the annotation
fta.RichText = "<body xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\" xfa:APIVersion=\"Acrobat:11.0.23\" xfa:spec=\"2.0.2\" style=\"color:#FF0000;font-weight:normal;font-style:normal;font-stretch:normal\"><p dir=\"ltr\"><span style=\"font-size:9.0pt;font-family:Helvetica\">This is a sample</span></p></body>";
// Save PDF document
document.Save(dataDir + "SetCalloutProperty_out.pdf");
}
}
If you use import from XFDF file please use callout-line name instead just Callout. The following code snippet shows, how to use this functionality:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ImportAnnotationsFromXfdf()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "AddAnnotation.pdf"))
{
// Create an XFDF string builder
var xfdf = new StringBuilder();
xfdf.AppendLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?><xfdf xmlns=\"http://ns.adobe.com/xfdf/\" xml:space=\"preserve\"><annots>");
// Call the method to create XFDF content
CreateXfdf(ref xfdf);
xfdf.AppendLine("</annots></xfdf>");
// Import annotations from the XFDF string
document.ImportAnnotationsFromXfdf(new MemoryStream(Encoding.UTF8.GetBytes(xfdf.ToString())));
// Save PDF document
document.Save(dataDir + "SetCalloutPropertyXfdf_out.pdf");
}
}
The following method is being used to CreateXfdf:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreateXfdf(ref StringBuilder pXfdf)
{
pXfdf.Append("<freetext");
pXfdf.Append(" page=\"0\"");
pXfdf.Append(" rect=\"422.25,645.75,583.5,702.75\"");
pXfdf.Append(" intent=\"FreeTextCallout\"");
pXfdf.Append(" callout-line=\"428.25,651.75,462.75,681.375,474,681.375\"");
pXfdf.Append(" tail=\"OpenArrow\"");
pXfdf.AppendLine(">");
pXfdf.Append("<contents-richtext><body ");
pXfdf.Append(" style=\"font-size:10.0pt;text-align:left;color:#FF0000;font-weight:normal;font-style:normal;font-family:Helvetica;font-stretch:normal\">");
pXfdf.Append("<p dir=\"ltr\">This is a sample</p>");
pXfdf.Append("</body></contents-richtext>");
pXfdf.AppendLine("<defaultappearance>/Helv 12 Tf 1 0 0 rg</defaultappearance>");
pXfdf.AppendLine("</freetext>");
}
Sometimes, it is necessary to create a watermark that isn’t visible in the document when viewing it but should be visible when the document is printed. Use annotation flags for this purpose. The following code snippet shows how.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddInvisibleAnnotation()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
// Create a free text annotation
var annotation = new Aspose.Pdf.Annotations.FreeTextAnnotation(
document.Pages[1],
new Aspose.Pdf.Rectangle(50, 600, 250, 650),
new Aspose.Pdf.Annotations.DefaultAppearance("Helvetica", 16, System.Drawing.Color.Red)
);
annotation.Contents = "ABCDEFG";
annotation.Characteristics.Border = System.Drawing.Color.Red;
annotation.Flags = Aspose.Pdf.Annotations.AnnotationFlags.Print | Aspose.Pdf.Annotations.AnnotationFlags.NoView;
// Add the annotation to the page
document.Pages[1].Annotations.Add(annotation);
// Save PDF document
document.Save(dataDir + "InvisibleAnnotation_out.pdf");
}
}
This part looks at how to format the text in a free text annotation.
Annotations are contained in a Page object’s AnnotationCollection collection. When adding a FreeTextAnnotation to a PDF document, you can specify the formatting information such as font, size, color and so on using the DefaultAppearance class. It is also possible to specify the formatting information using the TextStyle property. Furthermore, you can update the formatting of any FreeTextAnnotation already in the PDF document.
The TextStyle class supports working with the default style entry. This class allows you to set color, font size and font name:
The following code snippet shows how to add a FreeTextAnnotation with specific text formatting.
Aspose.PDF for .NET allows you to add, delete and update annotations in PDF documents. One of the classes allows you to strike out annotations too. This is useful when you want to strike out one or more text fragments in a documect. Annotations are held in a Page object’s AnnotationCollection collection. A class named StrikeOutAnnotation can be used to add strike out annotations to a PDF document.
To strike out a certain TextFragment:
The following code snippet shows how to search for a particular TextFragment and add a StrikeOutAnnotation to that object.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private void StrikeOutTextInDocument()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "pdf-sample.pdf"))
{
// Create TextFragment Absorber instance to search for a particular text fragment
var textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber("Estoque");
// Iterate through pages of PDF document
foreach (var page in document.Pages)
{
// Accept the absorber for the current page
page.Accept(textFragmentAbsorber);
}
// Get the collection of absorbed text fragments
var textFragmentCollection = textFragmentAbsorber.TextFragments;
// Iterate through the collection of text fragments
foreach (Aspose.Pdf.Text.TextFragment textFragment in textFragmentCollection)
{
// Get rectangular dimensions of the TextFragment object
var rect = new Aspose.Pdf.Rectangle(
(float)textFragment.Position.XIndent,
(float)textFragment.Position.YIndent,
(float)textFragment.Position.XIndent + (float)textFragment.Rectangle.Width,
(float)textFragment.Position.YIndent + (float)textFragment.Rectangle.Height);
// Instantiate StrikeOut Annotation instance
var strikeOut = new Aspose.Pdf.Annotations.StrikeOutAnnotation(textFragment.Page, rect)
{
// Set opacity for annotation
Opacity = 0.80f,
// Set the color of annotation
Color = Aspose.Pdf.Color.Red
};
// Set the border for annotation instance
strikeOut.Border = new Aspose.Pdf.Annotations.Border(strikeOut);
// Add annotation to the annotations collection of the TextFragment's page
textFragment.Page.Annotations.Add(strikeOut);
}
// Save PDF document
document.Save(dataDir + "StrikeOutWords_out.pdf");
}
}
A Page object’s AnnotationCollection collection contains all the annotations for that particular page. To delete all the annotations from a page, call the Delete method of the AnnotationCollectoin collection.
The following code snippet shows you how to delete all the annotations from a particular page.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void DeleteAllAnnotationsFromPage()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DeleteAllAnnotationsFromPage.pdf"))
{
// Delete all annotations from the first page
document.Pages[1].Annotations.Delete();
// Save PDF document
document.Save(dataDir + "DeleteAllAnnotationsFromPage_out.pdf");
}
}
Aspose.PDF allows you to remove a particular Annotation from PDF file. This topic explains how.
To delete a particular annotation from a PDF, call the AnnotationCollection collection’s Delete method. This collection belongs to the Page object. The Delete method requires the index of the annotation you want to delete. Then, save the updated PDF file. The following code snippet shows how to delete a particular annotation.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void DeleteParticularAnnotation()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DeleteParticularAnnotation.pdf"))
{
// Delete a particular annotation by index (e.g., the first annotation on the first page)
document.Pages[1].Annotations.Delete(1);
// Save PDF document
document.Save(dataDir + "DeleteParticularAnnotation_out.pdf");
}
}
Aspose.PDF allows you to get annotations from an entire document, or from a given page. To get all annotations from the page in a PDF document, loop through the AnnotationCollection collection of desired page resources. The following code snippet shows you how to get all the annotations of a page.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GetAllAnnotationsFromPage()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "GetAllAnnotationsFromPage.pdf"))
{
// Loop through all the annotations on the first page
foreach (Aspose.Pdf.Annotations.MarkupAnnotation annotation in document.Pages[1].Annotations)
{
// Get annotation properties
Console.WriteLine("Title : {0} ", annotation.Title);
Console.WriteLine("Subject : {0} ", annotation.Subject);
Console.WriteLine("Contents : {0} ", annotation.Contents);
}
}
}
Please note that to get all annotations from the whole PDF, you have to loop through the document’s PageCollection Class collection before navigating through the AnnotationCollection class collection. You can get each annotation of the collection in a base annotation type called MarkupAnnotation Class and then show its properties.
Annotations are associated with individual pages and stored in a Page object’s AnnotationCOllection collection. To get a particular annotation, specify its index. This returns an Annotation object which needs to be cast to a particular annotation type, for example TextAnnotation. The following code snippet shows how to get a particular annotation and its properties.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GetParticularAnnotation()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "GetParticularAnnotation.pdf"))
{
// Get a particular annotation by index (e.g., the first annotation on the first page)
var textAnnotation = (Aspose.Pdf.Annotations.TextAnnotation)document.Pages[1].Annotations[1];
// Get annotation properties
Console.WriteLine("Title : {0} ", textAnnotation.Title);
Console.WriteLine("Subject : {0} ", textAnnotation.Subject);
Console.WriteLine("Contents : {0} ", textAnnotation.Contents);
}
}
Aspose.PDF allows you to get a resource of annotation from an entire document, or from a given page. The following code snippet shows you how to get the resource of annotation as FileSpecification object of input PDF file.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddAndGetResourceOfAnnotation()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "AddAnnotation.pdf"))
{
// Create a screen annotation with a SWF file
var sa = new Aspose.Pdf.Annotations.ScreenAnnotation(document.Pages[1], new Aspose.Pdf.Rectangle(100, 400, 300, 600), dataDir + "AddSwfFileAsAnnotation.swf");
document.Pages[1].Annotations.Add(sa);
// Save PDF document with the new annotation
document.Save(dataDir + "GetResourceOfAnnotation_out.pdf");
// Open the updated document
var document1 = new Aspose.Pdf.Document(dataDir + "GetResourceOfAnnotation_Out.pdf");
// Get the action of the annotation
var action = (document1.Pages[1].Annotations[1] as Aspose.Pdf.Annotations.ScreenAnnotation).Action as Aspose.Pdf.Annotations.RenditionAction;
// Get the rendition of the rendition action
var rendition = action.Rendition;
// Get the media clip
var clip = (rendition as Aspose.Pdf.Annotations.MediaRendition).MediaClip;
var data = (clip as Aspose.Pdf.Annotations.MediaClipData).Data;
// Read the media data
using (var ms = new MemoryStream())
{
byte[] buffer = new byte[1024];
int read = 0;
// Data of media are accessible in FileSpecification.Contents
using (var source = data.Contents)
{
while ((read = source.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
}
Console.WriteLine(rendition.Name);
Console.WriteLine(action.RenditionOperation);
}
}
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.