Create a text annotation in PDF with rich text
Create a text annotation in PDF with rich text
This sample shows how to create annotations in PDF that use a rich text for their appearance. This can be done with PDFKit or PDFControls. With ‘rich text’ we mean the rich text as is described in the PDF reference at page 680 under ‘Rich Text Strings’.
C# code sample for text annotation with rich text in PDF
Step 1: Define your rich text
var rich_text = "<?xml version=\"1.0\"?><body xmlns=\"http://www.w3.org/1999/xhtml\"><p style=\"color:#000000;\">Black </p><p style=\"color:#FF0000;\">Red </p><p style=\"color:#1E487C;\">Blue </p></body>";
Step 2: Create a free text annotation, use the rich text
//create a freetext annotation
var txt = new FreeText(100, 600, 80, 60)
{
Text = rich_text,
};
Step 3: (optional) Add a popup to the free text annotation
//create a popup and assign it to the freetext
txt.Popup = new Popup(140, 500, 200, 100) { Open = true };
Step 4: Create a pdf document with the free text annotation
We create a PDF document and add the free text annotation to it.
//create new document
var document = new Document();
//create a page and add to the document
var page = new Page(PageSize.Letter);
document.Pages.Add(page);
... // Here comes the code to create the free text annotation
//add the free text annotation to the page
page.Markups.Add(txt);
//write the PDF document to the disk
const string fileName = @"FreeText.pdf";
using (var file = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
document.Write(file);
}
// open the PDF document
Process.Start(fileName);
Restrictions
The supported rich text format by PDF is restricted by the specifications and the abality of the reader software. The current sample deals with the following restrictions when using Adobe Acrobat Reader DC:
- Formating the rich text string with tabs and newlines for readability in the code will change the result;
- Where you would expect that the <p> element to create paragraphs, the encoding for a newline is needed to ensure that the texts appear on seperate lines;
- For colours hexa codes must be used as color names (‘red’, ‘black’, ‘blue’) are not processed.
<footer></footer>