PDFRasterizer.NET 4.0 is now available. Supports .NET Core. Renders pixel-perfectly.

How to add autosized text to PDF

This code sample shows you how you can add a piece of auto-sized text to your PDF document.

This can be done by creating a MultiLineTextShape with a textfragment of size 0 (which means autosize) and setting the boundaries of the text shape.

const string text =
"With PDFKit.NET you can Manipulate existing " +
"PDF documents and forms using a highly intuitive object model. " +
"Add pages, stamp content and fill forms.";

// create a new document
Document document = new Document();

// append a new page (portrait Letter)
bool landscape = false;
Page page = new Page(PageSize.Letter, landscape);
document.Pages.Add(page);

// stamp a multiline text shape
// note that the font size is set to 0 - this will autosize the text
MultilineTextShape multilineText = new MultilineTextShape();
Fragment fragment = new Fragment(text, Font.TimesRoman, 0);
multilineText.Fragments.Add(fragment);

// set boundaries of the text
multilineText.Width = page.Width / 4;
multilineText.Height = 75;

// center
TranslateTransform translate = new TranslateTransform();
multilineText.Transform = translate;
translate.X = (page.Width - multilineText.Width) / 2;
translate.Y = (page.Height - multilineText.Height) / 2 + multilineText.Height;

// add a rectangle shape to visualize the boundary of the text
RectangleShape rectangle = new RectangleShape(
    multilineText.X, multilineText.Y - multilineText.Height,
    multilineText.Width, multilineText.Height,
    null, new SolidBrush(System.Drawing.Color.Salmon));

// add both shapes
page.Overlay.Add(rectangle);
page.Overlay.Add(multilineText);

using (FileStream file = new FileStream(@"..\..\autosizetext.pdf", FileMode.Create, FileAccess.Write))
{
    document.Write(file);
}
Const  text As String = "With PDFKit.NET you can Manipulate existing " + "PDF documents and forms using a highly intuitive object model. " + "Add pages, stamp content and fill forms."

' create a new document
Dim document As New Document()

' append a new page (portrait Letter)
Dim landscape As Boolean = False
Dim page As New Page(PageSize.Letter, landscape)
document.Pages.Add(page)

' stamp a multiline text shape
' note that the font size is set to 0 - this will autosize the text
Dim multilineText As New MultilineTextShape()
Dim fragment As New Fragment(text, Font.TimesRoman, 0)
multilineText.Fragments.Add(fragment)

' set boundaries of the text
multilineText.Width = page.Width / 4
multilineText.Height = 75

' center
Dim translate As New TranslateTransform()
multilineText.Transform = translate
translate.X = (page.Width - multilineText.Width) / 2
translate.Y = (page.Height - multilineText.Height) / 2 + multilineText.Height

' add a rectangle shape to visualize the boundary of the text
Dim rectangle As New RectangleShape(multilineText.X, multilineText.Y - multilineText.Height, multilineText.Width, multilineText.Height, Nothing, New SolidBrush(System.Drawing.Color.Salmon))

' add both shapes
page.Overlay.Add(rectangle)
page.Overlay.Add(multilineText)

Using file As New FileStream("..\..\autosizetext.pdf", FileMode.Create, FileAccess.Write)
	document.Write(file)
End Using
Download PDFKit.NET 4.0
We will send you a download link

  • This field is for validation purposes and should be left unchanged.
Why do we ask your email address?
We send tips that speed up your evaluation
We let you know about bug fixes
You can always unsubscribe with one click
We never share your address with a 3rd party
Thank you for your download

We have sent an email with a download link.