Knowledgebase (2311)
Children categories
In the realm of PDF creation and editing, the ability to draw different styles of text within a PDF can greatly enhance the visual appeal and functionality of the documents. For example, you can draw transformed text to add a unique touch to the document design, or draw rotated text to create angled headings. In this article, you will learn how to draw text in PDF with different styles in C# using Spire.PDF for .NET.
Install Spire.PDF for .NET
To begin with, you need to add the DLL files included in the Spire.PDF for.NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.PDF
Coordinate System in Spire.PDF
The text drawn in PDF is based on the page coordinate system. When adding a new page in a PDF, the page usually consists of the content area and margins all around.
In this case, the origin of the coordinate system is located at the top left corner of the content area, with the x-axis extending horizontally to the right and the y-axis extending vertically down.

Transformation of the Coordinate System
When transforming text in PDF, you are actually transforming the coordinate system where the text is located. Spire.PDF allows to translate, scale, skew, and rotate the page coordinate. The specific methods are introduced below:
- TranslateTransform(5, 5): Translate the coordinate system 5 units to the right and 5 units downward.
- ScaleTransform(2, 2): Scale the unit lengths on both the X-axis and the Y-axis by a factor of 2.
- RotateTransform(-45): Rotate the coordinate system 45 degrees counterclockwise.
- SkewTransform(10, 10): Tilt the X-axis 10 degrees down and the Y-axis 10 degrees to the right

By mastering this background knowledge about the page coordinate system, you can use Spire.PDF more accurately to draw different styles of text in PDFs to achieve complex typography.
Draw Transformed Text in PDF in C#
To accomplish the task, you can scale or skew the coordinate system of a PDF page through the PdfPageBase.Canvas.ScaleTransform() or PdfPageBase.Canvas.SkewTransform() method, and then draw text on the transformed coordinate system. The following are the detailed steps.
- Create a PdfDocument instance.
- Add a page using PdfDocument.Pages.Add() method.
- Save the current drawing state using PdfPageBase.Canvas.Save() method.
- Specify the PDF font and brush.
- Translate the page coordinate system to the specified position using PdfPageBase.Canvas.TranslateTransform() method .
- Scale the current coordinate system using PdfPageBase.Canvas.ScaleTransform() method .
- Skew the current coordinate system using PdfPageBase.Canvas.SkewTransform() method.
- Draw text on the page based on the transformed coordinate system using PdfPageBase.Canvas.DrawString() method.
- Restore the previous drawing state using PdfPageBase.Canvas.Restore(state) method.
- Save the result file using PdfDocument.SaveToFile() method.
- C#
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace PDFText
{
class Program
{
static void Main(string[] args)
{
// Create a PdfDocument instance
PdfDocument pdf = new PdfDocument();
// Add a page
PdfPageBase page = pdf.Pages.Add();
// Save the current graphics state
PdfGraphicsState state = page.Canvas.Save();
// Specify the PDF font and brush
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 18f);
PdfSolidBrush brush1 = new PdfSolidBrush(Color.Green);
PdfSolidBrush brush2 = new PdfSolidBrush(Color.Blue);
PdfSolidBrush brush3 = new PdfSolidBrush(Color.Magenta);
// Translate the coordinate system by specified coordinates
page.Canvas.TranslateTransform(20, 280);
// Scale the coordinate system by specified coordinates
page.Canvas.ScaleTransform(1f, 0.6f);
// Skew the coordinate system axes
page.Canvas.SkewTransform(-10, 0);
// Draw transformed text on the page
page.Canvas.DrawString("A Powerful PDF Processing Library", font, brush1, 0, -30);
// Skew the coordinate system axes
page.Canvas.SkewTransform(10, 0);
// Draw transformed text on the page
page.Canvas.DrawString("A Powerful PDF Processing Library", font, brush2, 0, 0);
//Scale the coordinate system by specified coordinates
page.Canvas.ScaleTransform(1f, -1f);
// Draw transformed text on the page
page.Canvas.DrawString("A Powerful PDF Processing Library", font, brush3, 0, 0);
// Restor graphics state
page.Canvas.Restore(state);
// Save the result document
pdf.SaveToFile("TransformText.pdf");
pdf.Close();
}
}
}

Draw Rotated Text in PDF in C#
The PdfPageBase.Canvas.RotateTransform(float angle) method provided by Spire.PDF allows to rotate the page coordinate system to specified angle, and then the text drawn on the page will be presented as rotated text. The following are the detailed steps.
- Create a PdfDocument instance.
- Add a page using PdfDocument.Pages.Add() method.
- Save the current drawing state using PdfPageBase.Canvas.Save() method.
- Specify the PDF font and brush, and set PDF text alignment.
- Translate the page coordinate system to the specified position using PdfPageBase.Canvas.TranslateTransform() method.
- Rotate the coordinate system by specified degree using PdfPageBase.Canvas.RotateTransform() method.
- Draw text on the page based on the rotated coordinate system using PdfPageBase.Canvas.DrawString() method.
- Restore the previous drawing state using PdfPageBase.Canvas.Restore(state) method.
- Save the result file using PdfDocument.SaveToFile() method.
- C#
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace PDFText
{
class Program
{
static void Main(string[] args)
{
// Create a PdfDocument instance
PdfDocument pdf = new PdfDocument();
// Add a page
PdfPageBase page = pdf.Pages.Add();
// Save the current graphics state
PdfGraphicsState state = page.Canvas.Save();
// Specify the PDF font and brush
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 12f);
PdfSolidBrush brush = new PdfSolidBrush(Color.Blue);
// Set PDF text alignment
PdfStringFormat centerAlignment = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
// Translate the coordinate system by specified coordinates
page.Canvas.TranslateTransform(page.Canvas.ClientSize.Width / 2, 380);
// Draw rotated text on the PDF page
for (int i = 0; i < 8; i++)
{
page.Canvas.RotateTransform(45);
page.Canvas.DrawString("A Powerful PDF Processing Library", font, brush, 20, 0, centerAlignment);
}
// Restor graphics state
page.Canvas.Restore(state);
// Save the result document
pdf.SaveToFile("RotateText.pdf");
pdf.Close();
}
}
}

Draw Aligned Text in PDF in C#
Spire.PDF for .NET provides the PdfStringFormat class to represent the text layout information. You can initialize an instance of the PdfStringFormat class and pass in two parameters PdfTextAlignment and PdfVerticalAlignment to specify a text alignment style, then draw text with the alignment style. The following are the detailed steps.
- Create a PdfDocument instance.
- Add a page using PdfDocument.Pages.Add() method.
- Save the current drawing state using PdfPageBase.Canvas.Save() method.
- Specify the PDF font and brush.
- Create a PdfStringFormat instance and pass in the PdfTextAlignment and PdfVerticalAlignment parameters to specify the text alignment style.
- Draw text with the specified alignment style on the PDF page using PdfPageBase.Canvas.DrawString() method.
- Save the result file using PdfDocument.SaveToFile() method.
- C#
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace PDFText
{
class Program
{
static void Main(string[] args)
{
// Create a PdfDocument instance
PdfDocument pdf = new PdfDocument();
// Add a page
PdfPageBase page = pdf.Pages.Add();
// Specify the PDF font and brush
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 14f);
PdfSolidBrush brush1 = new PdfSolidBrush(Color.Green);
PdfSolidBrush brush2 = new PdfSolidBrush(Color.Blue);
PdfSolidBrush brush3 = new PdfSolidBrush(Color.Magenta);
// Draw left-aligned text on the PDF page
PdfStringFormat leftAlignment = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
page.Canvas.DrawString("Left Align", font, brush1, 0, 60, leftAlignment);
// Draw right-aligned text on the PDF page
PdfStringFormat rightAlignment = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle);
page.Canvas.DrawString("Right Align", font, brush2, page.Canvas.ClientSize.Width, 60, rightAlignment);
// Draw center-aligned text on the PDF page
PdfStringFormat centerAlignment = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
page.Canvas.DrawString("Center Align", font, brush3, page.Canvas.ClientSize.Width / 2, 60, centerAlignment);
// Save the result document
pdf.SaveToFile("PdfTextAlignment.pdf");
pdf.Close();
}
}
}

Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
Compared with text-only documents, documents containing images are undoubtedly more vivid and engaging to readers. When generating or editing a PDF document, you may sometimes need to insert images to improve its appearance and make it more appealing. In this article, you will learn how to insert, replace or delete images in PDF documents in C# and VB.NET using Spire.PDF for .NET.
- Insert an Image into a PDF Document
- Replace an Image with Another Image in a PDF Document
- Delete a Specific Image in a PDF Document
Install Spire.PDF for .NET
To begin with, you need to add the DLL files included in the Spire.PDF for.NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.PDF
Insert an Image into a PDF Document in C# and VB.NET
The following steps demonstrate how to insert an image into an existing PDF document:
- Initialize an instance of the PdfDocument class.
- Load a PDF document using PdfDocument.LoadFromFile() method.
- Get the desired page in the PDF document through PdfDocument.Pages[pageIndex] property.
- Load an image using PdfImage.FromFile() method.
- Specify the width and height of the image area on the page.
- Specify the X and Y coordinates to start drawing the image.
- Draw the image on the page using PdfPageBase.Canvas.DrawImage() method.
- Save the result document using PdfDocument.SaveToFile() method.
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace InsertImage
{
class Program
{
static void Main(string[] args)
{
//Create a PdfDocument instance
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Input.pdf");
//Get the first page in the PDF document
PdfPageBase page = pdf.Pages[0];
//Load an image
PdfImage image = PdfImage.FromFile("image.jpg");
//Specify the width and height of the image area on the page
float width = image.Width * 0.50f;
float height = image.Height * 0.50f;
//Specify the X and Y coordinates to start drawing the image
float x = 180f;
float y = 70f;
//Draw the image at a specified location on the page
page.Canvas.DrawImage(image, x, y, width, height);
//Save the result document
pdf.SaveToFile("AddImage.pdf", FileFormat.PDF);
}
}
}

Replace an Image with Another Image in a PDF Document in C# and VB.NET
The following steps demonstrate how to replace an image with another image in a PDF document:
- Initialize an instance of the PdfDocument class.
- Load a PDF document using PdfDocument.LoadFromFile() method.
- Get the desired page in the PDF document through PdfDocument.Pages[pageIndex] property.
- Load an image using PdfImage.FromFile() method.
- Initialize an instance of the PdfImageHelper class.
- Get the image information from the page using PdfImageHelper.GetImagesInfo() method.
- Replace a specific image on the page with the loaded image using PdfImageHelper.ReplaceImage() method.
- Save the result document using PdfDocument.SaveToFile() method.
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Utilities;
namespace ReplaceImage
{
class Program
{
static void Main(string[] args)
{
//Create a PdfDocument instance
PdfDocument doc = new PdfDocument();
//Load a PDF document
doc.LoadFromFile("AddImage.pdf");
//Get the first page
PdfPageBase page = doc.Pages[0];
//Load an image
PdfImage image = PdfImage.FromFile("image1.jpg");
//Create a PdfImageHelper instance
PdfImageHelper imageHelper = new PdfImageHelper();
//Get the image information from the page
PdfImageInfo[] imageInfo = imageHelper.GetImagesInfo(page);
//Replace the first image on the page with the loaded image
imageHelper.ReplaceImage(imageInfo[0], image);
//Save the result document
doc.SaveToFile("ReplaceImage.pdf", FileFormat.PDF);
}
}
}

Delete a Specific Image in a PDF Document in C# and VB.NET
The following steps demonstrate how to delete an image from a PDF document:
- Initialize an instance of the PdfDocument class.
- Load a PDF document using PdfDocument.LoadFromFile() method.
- Get the desired page in the PDF document through PdfDocument.Pages[pageIndex] property.
- Delete a specific image on the page using PdfPageBase.DeleteImage() method.
- Save the result document using PdfDocument.SaveToFile() method.
- C#
- VB.NET
using Spire.Pdf;
namespace DeleteImage
{
class Program
{
static void Main(string[] args)
{
//Create a PdfDocument instance
PdfDocument pdf = new PdfDocument();
//Load a PDF document
pdf.LoadFromFile("AddImage.pdf");
//Get the first page
PdfPageBase page = pdf.Pages[0];
//Delete the first image on the page
PdfImageHelper imageHelper = new PdfImageHelper();
PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(pdf.Pages[0]);
for (int i = 0; i < imageInfos.Length; i++)
{ imageHelper.DeleteImage(imageInfos[i], true); }
//Save the result document
pdf.SaveToFile("DeleteImage.pdf", FileFormat.PDF);
}
}
}

Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
Word documents can be protected in a variety of ways, depending on the security requirements. To prevent unauthorized people from opening a document, you can encrypt it with a password. To allow users to open the document, but not edit or modify its content, you can make the document read-only or mark it as final. To allow users to modify parts of the document, you can lock the entire document but let specified sections available for editing. This article focuses on how to protect or unprotect a Word document in C# and VB.NET using Spire.Doc for .NET.
- Password Protect a Word Document in C#, VB.NET
- Change Permission of a Word Document in C#, VB.NET
- Lock Specified Sections of a Word Document in C#, VB.NET
- Mark a Word Document as Final in C#, VB.NET
- Remove Password from a Word Document in C#, VB.NET
Install Spire.Doc for .NET
To begin with, you need to add the DLL files included in the Spire.Doc for.NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.Doc
Password Protect a Word Document in C#, VB.NET
Encrypting a document with a password makes sure that only you and certain people can read or edit it. The following are the steps to protect a Word document with a password using Spire.Doc for .NET.
- Create a Document object.
- Load a Word document using Document.LoadFromFile() method.
- Encrypt the document with a password using Document.Encrypt() method.
- Save the document to another Word file using Document.SaveToFile() method.
- C#
- VB.NET
using Spire.Doc;
namespace PasswordProtectWordDocument
{
class Program
{
static void Main(string[] args)
{
//Create a Document object
Document document = new Document();
//Load a Word file
document.LoadFromFile(@"C:\Users\Administrator\Desktop\test.docx");
//Encrypt the document with a password
document.Encrypt("open-psd");
//Save the document to another Word file
document.SaveToFile("Encryption.docx", FileFormat.Docx);
}
}
}

Change Permission of a Word Document in C#, VB.NET
Documents encrypted with an open password cannot be opened by those who do not know the password. If you’d like to grant people permission to read your document but restrict the types of modifications that someone can make, you can set the document permission. The following are the steps to change permission of a Word document using Spire.Doc for .NET.
- Create a Document object.
- Load a Word document using Document.LoadFromFile() method.
- Set the document permission and set the permission password using Document.Protect() method.
- Save the document to another Word file using Document.SaveToFile() method.
- C#
- VB.NET
using Spire.Doc;
namespace ChangeDocumentPermission
{
class Program
{
static void Main(string[] args)
{
//Create a Document object
Document document = new Document();
//Load a Word document
document.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.docx");
//Set the document permission and set the permission password
document.Protect(ProtectionType.AllowOnlyFormFields, "permission-psd");
//Save the document to another Word file
document.SaveToFile("Permission.docx");
}
}
}

Lock Specified Sections of a Word Document in C#, VB.NET
When you protect your document, you can lock parts of it so that they cannot be changed and leave the unlocked parts available for editing. The following are the steps to protect specified sections of a Word document using Spire.Doc for .NET.
- Create a Document object.
- Load a Word document using Document.LoadFromFile() method.
- Set the editing restriction as AllowOnlyFormFields.
- Unprotect a specific section by setting Document.Sections[index].ProtectForm to false. The rest sections will continue to be protected.
- Save the document to another Word file using Document.SaveToFile() method.
- C#
- VB.NET
using Spire.Doc;
namespace ProtectSpecificSection
{
class Program
{
static void Main(string[] args)
{
//Create a Document object
Document doc = new Document();
//Load a Word document
doc.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.docx");
//Set editing restriction as "AllowOnlyFormFields"
doc.Protect(ProtectionType.AllowOnlyFormFields, "permissionPsd");
//Unprotect section 2
doc.Sections[1].ProtectForm = false;
//Save the document to another Word file
doc.SaveToFile("ProtectSection.docx");
}
}
}

Mark a Word Document as Final in C#, VB.NET
By marking a document as Final, you disable typing, editing, and format changes capabilities and a message will appear to any reader that the document has been finalized. The following are the steps to mark a Word document as final using Spire.Doc for .NET.
- Create a Document object.
- Load a Word file using Document.LoadFromFile() method.
- Get the CustomDocumentProperties object from the document.
- Add a custom property "_MarkAsFinal" to the document.
- Save the document to another Word file using Document.SaveToFile() method.
- C#
- VB.NET
using Spire.Doc;
namespace MarkAsFinal
{
class Program
{
static void Main(string[] args)
{
//Create a Document object
Document doc = new Document();
//Load a Word document
doc.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.docx");
//Get custom document properties
CustomDocumentProperties customProperties = doc.CustomDocumentProperties;
//Add "_MarkAsFinal" property to the document
customProperties.Add("_MarkAsFinal", true);
//Save the document to another Word file
doc.SaveToFile("MarkAsFinal.docx");
}
}
}

Remove Password from a Word Document in C#, VB.NET
You can remove the password from an encrypted document if the encryption is no longer needed. The following are the detailed steps.
- Create a Document object.
- Load a Word document using Document.LoadFromFile() method.
- Remove the password using Document.RemoveEncryption() method.
- Save the document to another Word file using Document.SaveToFile() method.
- C#
- VB.NET
using Spire.Doc;
namespace RemovePassword
{
class Program
{
static void Main(string[] args)
{
//Create a Document object
Document document = new Document();
//Load an encrypted Word document
document.LoadFromFile(@"C:\Users\Administrator\Desktop\Encryption.docx", FileFormat.Docx, "open-psd");
//Remove encryption
document.RemoveEncryption();
//Save the document to another Word file
document.SaveToFile("Decryption.docx", FileFormat.Docx);
}
}
}
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.