Edit PDF Content and Fonts
The ImageGear API provides content editing functionality for creating, accessing, and editing PDF page content objects. With this API you can work with a page's content as a list of objects, such as images, text, forms. You can retain, modify, and save their data and properties.
Document font support includes:
- Listing the fonts available in the host system and finding a system font that matches a PDF font
- Creating a font from the system font and encoding as well as from the specified attributes
- Changing a font's information
- Editing and embedding a font in the document
- Both single and multiple byte fonts are supported
The code snippet below adds a text element to the content of a PDF. This example demonstrates creating a font, using the content in a PDF, and creating a text element.
To add Unicode text to a PDF, see the example at ImGearPDEText.Add.
PDF support needs to be initialized first for this snippet to work. To get familiar with initializing IGNET, initializing PDF support, loading a PDF, saving a PDF, and terminating PDF support, try any one of the
tutorials.
C# |
Copy Code |
using System;
using System.IO;
using System.Windows.Forms;
using ImageGear.Core;
using ImageGear.Formats;
using ImageGear.Formats.PDF;
// This function will add a text element into the content of the PDF document.
public void AddTextToPDFContent(ImGearPDFDocument pdfDocument)
{
// Select the first page of the current document.
ImGearPDFPage page = (ImGearPDFPage)pdfDocument.Pages[0];
// Get the content of the first page of the PDF document.
using (ImGearPDEContent content = (page).GetContent())
{
// Get the count of the elements on the page.
int elementCount = content.ElementCount;
// Make a new text element to add to the page content.
ImGearPDEText textElement = CreateTextElement();
// Insert a Text Element into the content.
content.AddElement((int)ImGearPDEInsertElement.AFTER_LAST, textElement);
// Set the page's PDE content back into the page object.
page.SetContent();
}
}
// This function returns a new font to use for the text element.
public ImGearPDEFont CreateFont()
{
// Create a ImGearPDEFontAttrs to get the attributes for ImGearPDEFont and ImGearPDFSysFont.
ImGearPDEFontAttrs findAttrs = new ImGearPDEFontAttrs();
// Set the font name.
findAttrs.Name = new ImGearPDFAtom("Times-Roman");
// Set the font type.
findAttrs.Type = new ImGearPDFAtom("Type1");
// Create the font.
ImGearPDEFont font = new ImGearPDEFont(findAttrs, 0, 255, null, null, null, null, 0, 0, 0);
return font;
}
// This function returns a new text element that will be added to the PDF content.
public ImGearPDEText CreateTextElement()
{
ImGearPDEText textElement = null;
// Set the color space to DeviceRGB.
ImGearPDEColorSpace colorSpace = new ImGearPDEColorSpace(new ImGearPDFAtom("DeviceRGB"));
// Set the attributes for the graphic state.
ImGearPDEGraphicState gState = new ImGearPDEGraphicState();
// Set the color values.
// R.
gState.FillColorSpec.Value.Color[0] = 0;
// G.
gState.FillColorSpec.Value.Color[1] = 128 * 255;
// B.
gState.FillColorSpec.Value.Color[2] = 255 * 255;
gState.MiterLimit = (int)ImGearPDFFixedValues.TEN;
gState.Flatness = (int)ImGearPDFFixedValues.ONE;
gState.LineWidth = (int)ImGearPDFFixedValues.ONE;
// Create a transformation matrix of fixed numbers.
ImGearPDFFixedMatrix textMatrix = new ImGearPDFFixedMatrix();
textMatrix.A = ImGearPDF.IntToFixed(20);
textMatrix.D = ImGearPDF.IntToFixed(20);
textMatrix.H = ImGearPDF.IntToFixed(100);
textMatrix.V = ImGearPDF.IntToFixed(700);
// Create a string of text.
string textToAdd = "This is the string of text that will be added";
// Create a font to use with the text element.
ImGearPDEFont font = CreateFont();
// Create a new text element.
textElement = new ImGearPDEText();
// Add the textToAdd into the element using the settings from above.
textElement.Add(ImGearPDETextFlags.RUN, 0, textToAdd, font, gState, null, textMatrix, null);
return textElement;
} |
VB.NET |
Copy Code |
Imports System.IO
Imports System.Windows.Forms
Imports ImageGear.Core
Imports ImageGear.Formats
Imports ImageGear.Formats.PDF
' This function will add a text element into the content of the PDF document.
Public Sub AddTextToPDFContent(pdfDocument As ImGearPDFDocument)
' Select the first page of the current document.
Dim page As ImGearPDFPage = DirectCast(pdfDocument.Pages(0), ImGearPDFPage)
' Get the content of the first page of the PDF document.
Using content As ImGearPDEContent = (page).GetContent()
' Get the count of the elements on the page.
Dim elementCount As Integer = content.ElementCount
' Make a new text element to add to the page content.
Dim textElement As ImGearPDEText = CreateTextElement()
' Insert a Text Element into the content.
content.AddElement(CInt(ImGearPDEInsertElement.AFTER_LAST), textElement)
' Set the page's PDE content back into the page object.
page.SetContent()
End Using
End Sub
' This function returns a new font to use for the text element.
Public Function CreateFont() As ImGearPDEFont
' Create a ImGearPDEFontAttrs to get the attributes for ImGearPDEFont and ImGearPDFSysFont.
Dim findAttrs As New ImGearPDEFontAttrs()
' Set the font name.
findAttrs.Name = New ImGearPDFAtom("Times-Roman")
' Set the font type.
findAttrs.Type = New ImGearPDFAtom("Type1")
' Create the font.
Dim font As New ImGearPDEFont(findAttrs, 0, 255, Nothing, Nothing, Nothing, _
Nothing, 0, 0, 0)
Return font
End Function
' This function returns a new text element that will be added to the PDF content.
Public Function CreateTextElement() As ImGearPDEText
Dim textElement As ImGearPDEText = Nothing
' Set the color space to DeviceRGB.
Dim colorSpace As New ImGearPDEColorSpace(New ImGearPDFAtom("DeviceRGB"))
' Set the attributes for the graphic state.
Dim gState As New ImGearPDEGraphicState()
' Set the color values.
' R.
gState.FillColorSpec.Value.Color(0) = 0
' G.
gState.FillColorSpec.Value.Color(1) = 128 * 255
' B.
gState.FillColorSpec.Value.Color(2) = 255 * 255
gState.MiterLimit = CInt(ImGearPDFFixedValues.TEN)
gState.Flatness = CInt(ImGearPDFFixedValues.ONE)
gState.LineWidth = CInt(ImGearPDFFixedValues.ONE)
' Create a transformation matrix of fixed numbers.
Dim textMatrix As New ImGearPDFFixedMatrix()
textMatrix.A = ImGearPDF.IntToFixed(20)
textMatrix.D = ImGearPDF.IntToFixed(20)
textMatrix.H = ImGearPDF.IntToFixed(100)
textMatrix.V = ImGearPDF.IntToFixed(700)
' Create a string of text.
Dim textToAdd As String = "This is the string of text that will be added"
' Create a font to use with the text element.
Dim font As ImGearPDEFont = CreateFont()
' Create a new text element.
textElement = New ImGearPDEText()
' Add the textToAdd into the element using the settings from above.
textElement.Add(ImGearPDETextFlags.RUN, 0, textToAdd, font, gState, Nothing, _
textMatrix, Nothing)
Return textElement
End Function |