Python: Add Page Numbers to a PDF Document
Adding page numbers to a PDF enhances its organization and readability, making it easier for readers to navigate the document. Whether for reports, manuals, or e-books, page numbers provide a professional touch and help maintain the flow of information. This process involves determining the placement, alignment, and style of the numbers within the footer or header.
In this article, you will learn how to add page numbers to the PDF footer using Spire.PDF for Python.
- Add Left-Aligned Page Numbers to PDF Footer
- Add Center-Aligned Page Numbers to PDF Footer
- Add Right-Aligned Page Numbers to PDF Footer
Install Spire.PDF for Python
This scenario requires Spire.PDF for Python and plum-dispatch v1.7.4. They can be easily installed in your Windows through the following pip command.
pip install Spire.PDF
If you are unsure how to install, please refer to this tutorial: How to Install Spire.PDF for Python on Windows
Coordinate System in PDF
When using Spire.PDF for Python to modify a PDF document, the coordinate system's origin is at the top-left corner of the page. The x-axis extends to the right, while the y-axis extends downward.
Page numbers are usually positioned in the header or footer. Thus, it's important to consider the page size and margins when determining the placement of the page numbers.
Classes and Methods for Creating Page Numbers
Spire.PDF for Python provides the PdfPageNumberField and PdfPageCountField classes to retrieve the current page number and total page count. These can be merged into a single PdfCompositeField that formats the output as "Page X of Y", where X represents the current page number and Y indicates the total number of pages.
To position the PdfCompositeField on the page, use the Location property, and render it with the Draw() method.
Add Left-Aligned Page Numbers to PDF Footer
To add left-aligned page numbers in the footer, you need to consider the left and bottom page margins as well as the page height. For example, you can use coordinates such as (LeftMargin, PageHeight – BottomMargin + SmallNumber). This ensures that the page numbers align with the left side of the text while keeping a comfortable distance from both the content and the edges of the page.
The steps to add left-aligned page numbers to PDF footer are as follows:
- Create a PdfDocument object.
- Load a PDF file from a specified path.
- Create a PdfPageNumberField object and a PdfPageCountField object.
- Create a PdfCompositeField object to combine page count field and page number field in a single string.
- Set the position of the composite field through PdfCompositeField.Location property to ensure the page number aligns with the left side of the text.
- Iterate through the pages in the document, and draw the composite field on each page at the specified location.
- Save the document to a different PDF file.
- Python
from spire.pdf.common import * from spire.pdf import * # Create a PdfDocument object doc = PdfDocument() # Load a PDF file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Privacy Policy.pdf") # Create font, brush and pen font = PdfTrueTypeFont("Times New Roman", 12.0, PdfFontStyle.Regular, True) brush = PdfBrushes.get_Black() pen = PdfPen(brush, 1.0) # Create a PdfPageNumberField object and a PdfPageCountField object pageNumberField = PdfPageNumberField() pageCountField = PdfPageCountField() # Create a PdfCompositeField object to combine page count field and page number field in a single string compositeField = PdfCompositeField(font, brush, "Page {0} of {1}", [pageNumberField, pageCountField]) # Get the page size pageSize = doc.Pages[0].Size # Specify the blank areas around the page leftMargin = 54.0 rightMargin = 54.0 bottomMargin = 72.0 # Set the location of the composite field compositeField.Location = PointF(leftMargin, pageSize.Height - bottomMargin + 18.0) # Iterate through the pages in the document for i in range(doc.Pages.Count): # Get a specific page page = doc.Pages[i] # Draw a line at the specified position page.Canvas.DrawLine(pen, leftMargin, pageSize.Height - bottomMargin + 15.0, pageSize.Width - rightMargin, pageSize.Height - bottomMargin + 15.0) # Draw the composite field on the page compositeField.Draw(page.Canvas, 0.0, 0.0) # Save to a different PDF file doc.SaveToFile("Output/LeftAlignedPageNumbers.pdf") # Dispose resources doc.Dispose()
Add Center-Aligned Page Numbers to PDF Footer
To position the page number in the center of the footer, you first need to measure the width of the page number itself. Once you have this measurement, you can calculate the appropriate X coordinate by using the formula (PageWidth - PageNumberWidth) / 2. This ensures the page number is horizontally centered within the footer.
The steps to add center-aligned page numbers to PDF footer are as follows:
- Create a PdfDocument object.
- Load a PDF file from a specified path.
- Create a PdfPageNumberField object and a PdfPageCountField object.
- Create a PdfCompositeField object to combine page count field and page number field in a single string.
- Set the position of the composite field through PdfCompositeField.Location property to ensure the page number is perfectly centered in the footer.
- Iterate through the pages in the document, and draw the composite field on each page at the specified location.
- Save the document to a different PDF file.
- Python
from spire.pdf.common import * from spire.pdf import * # Create a PdfDocument object doc = PdfDocument() # Load a PDF file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Privacy Policy.pdf") # Create font, brush and pen font = PdfTrueTypeFont("Times New Roman", 12.0, PdfFontStyle.Regular, True) brush = PdfBrushes.get_Black() pen = PdfPen(brush, 1.0) # Specify the blank margins around the page leftMargin = 54.0 rightMargin = 54.0 bottomMargin = 72.0 # Create a PdfPageNumberField object and a PdfPageCountField object pageNumberField = PdfPageNumberField() pageCountField = PdfPageCountField() # Create a PdfCompositeField object to combine page count field and page number field in a single field compositeField = PdfCompositeField(font, brush, "Page {0} of {1}", [pageNumberField, pageCountField]) # Iterate through the pages in the document for i in range(doc.Pages.Count): # Get a specific page page = doc.Pages[i] # Get the page size pageSize = doc.Pages[i].Size # Draw a line at the specified position page.Canvas.DrawLine(pen, leftMargin, pageSize.Height - bottomMargin + 15.0, pageSize.Width - rightMargin, pageSize.Height - bottomMargin + 15.0) # Measure the size the "Page X of Y" pageNumberSize = font.MeasureString("Page {} of {}".format(i + 1, doc.Pages.Count)) # Set the location of the composite field compositeField.Location = PointF((pageSize.Width - pageNumberSize.Width)/2, pageSize.Height - bottomMargin + 18.0) # Draw the composite field on the page compositeField.Draw(page.Canvas, 0.0, 0.0) # Save to a different PDF file doc.SaveToFile("Output/CenterAlignedPageNumbers.pdf") # Dispose resources doc.Dispose()
Add Right-Aligned Page Numbers to PDF Footer
To add a right-aligned page number in the footer, measure the width of the page number. Then, calculate the X coordinate using the formula PageWidth - PageNumberWidth - RightMargin. This ensures that the page number aligns with the right side of the text.
The following are the steps to add right-aligned page numbers to PDF footer:
- Create a PdfDocument object.
- Load a PDF file from a specified path.
- Create a PdfPageNumberField object and a PdfPageCountField object.
- Create a PdfCompositeField object to combine page count field and page number field in a single string.
- Set the position of the composite field through PdfCompositeField.Location property to ensure the page number aligns with the right side of the text.
- Iterate through the pages in the document, and draw the composite field on each page at the specified location.
- Save the document to a different PDF file.
- Python
from spire.pdf.common import * from spire.pdf import * # Create a PdfDocument object doc = PdfDocument() # Load a PDF file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Privacy Policy.pdf") # Create font, brush and pen font = PdfTrueTypeFont("Times New Roman", 12.0, PdfFontStyle.Regular, True) brush = PdfBrushes.get_Black() pen = PdfPen(brush, 1.0) # Specify the blank margins around the page leftMargin = 54.0 rightMargin = 54.0 bottomMargin = 72.0 # Create a PdfPageNumberField object and a PdfPageCountField object pageNumberField = PdfPageNumberField() pageCountField = PdfPageCountField() # Create a PdfCompositeField object to combine page count field and page number field in a single string compositeField = PdfCompositeField(font, brush, "Page {0} of {1}", [pageNumberField, pageCountField]) # Iterate through the pages in the document for i in range(doc.Pages.Count): # Get a specific page page = doc.Pages[i] # Get the page size pageSize = doc.Pages[i].Size # Draw a line at the specified position page.Canvas.DrawLine(pen, leftMargin, pageSize.Height - bottomMargin + 15.0, pageSize.Width - rightMargin, pageSize.Height - bottomMargin + 15.0) # Measure the size the "Page X of Y" pageNumberSize = font.MeasureString("Page {} of {}".format(i + 1, doc.Pages.Count)) # Set the location of the composite field compositeField.Location = PointF(pageSize.Width - pageNumberSize.Width - rightMargin, pageSize.Height - bottomMargin + 18.0) # Draw the composite field on the page compositeField.Draw(page.Canvas, 0.0, 0.0) # Save to a different PDF file doc.SaveToFile("Output/RightAlignedPageNumbers.pdf") # Dispose resources doc.Dispose()
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.
Python: Add Header and Footer When Creating a PDF Document
When creating a new PDF document, you can add information about the company, icons, and page numbers as the header and footer to enhance the appearance and professionalism of PDF documents.
This detailed guide will introduce how to add a header and footer when creating a new PDF Document in Python with Spire.PDF for Python effortlessly. Read on.
- Add Header with Python When Creating a PDF Document
- Add Footer with Python When Creating a PDF Document
Install Spire.PDF for Python
This scenario requires Spire.PDF for Python and plum-dispatch v1.7.4. They can be easily installed in your Windows through the following pip command.
pip install Spire.PDF
If you are unsure how to install, please refer to this tutorial: How to Install Spire.PDF for Python on Windows.
Background Knowledge
Spire.PDF for Python offers the PdfPageTemplateElement class for defining page template elements. It provides users with PdfPageTemplateElement.Graphics.DrawString(), PdfPageTemplateElement.Graphics.DrawLine(), PdfPageTemplateElement.Graphics.DrawImage(), and more to draw text, lines, and images. Furthermore, Spire.PDF for Python supports drawing automatic fields like PdfPageCountField and PdfPageNumberField to the template element by PdfGraphicsWidget.Draw() method.
To draw content on the PdfPageTemplateElement template element, the coordinate system settings are as follows:
- The coordinates system's origin is positioned at the top left corner of the template.
- The x-axis extends to the right, and the y-axis extends downward.
Spire.PDF for Python provides PdfDocumentTemplate class to design the entire page templates of a PDF. The defined PdfPageTemplateElement page template elements above can be applied to the PdfDocumentTemplate page template directly.
PdfDocumentTemplate can apply one or more PdfPageTemplateElement page template elements. For example, apply them to PdfDocumentTemplate.Top and PdfDocumentTemplate.Bottom page templates to create a header and footer in the PDF.
The new page generated by Spire.PDF contains margins by default. The initialization coordinates for the PdfDocumentTemplate page template are set as follows:
Content cannot be drawn in the margins. To apply PdfPageTemplateElement to PdfDocumentTemplate for the header and footer, you can reset the PDF margins to 0. This way, the coordinate system of the PdfDocumentTemplate page template on the new page will adjust based on the size set by the PdfPageTemplateElement. For example:
Add a Header with Python When Creating a PDF Document
The following explains how to add text, images, and lines to the header using Spire.PDF for Python when creating a new PDF.
Part 1: Design the header template elements by customizing the CreateHeaderTemplate() method.
- Create PdfPageTemplateElement objects.
- Set the font, brush, pen, and text alignment format for drawing the content of the header by defining PdfTrueTypeFont, PdfBrushes, PdfPen, and PdfTextAlignment.
- Load images to be drawn in the header with PdfImage.FromFile() method.
- Draw text, lines, and images at specified positions in the header template elements using PdfPageTemplateElement.Graphics.DrawString(), PdfPageTemplateElement.Graphics.DrawLine(), and PdfPageTemplateElement.Graphics.DrawImage() methods.
Part 2: Create PDF document objects and call the custom method above to add the header
- Create a new PdfDocument object.
- Set page size by PdfDocoment.PageSettings.Size. Reset the top, bottom, left, and right margins to 0 using PageSettings.Margins.
- Create a new PdfMargins object to set the sizes of the header, the footer, and the left and right templates.
- Call the custom method CreateHeaderTemplate() to add a header.
- Add pages using PdfDocument.Pages.Add() method.
- Define PdfTrueTypeFont and PdfBrushes to set font and brushes for drawing the main content.
- Draw content in the specified area on the newly created page using PdfPageBase.Canvas.DrawString() method.
- Save the resulting file with PdfDocument.SaveToFile() method.
- Python
from spire.pdf.common import * from spire.pdf import * # Define CreateHeaderTemplate() def CreateHeaderTemplate(doc, pageSize, margins): #Create a header template with a specified size headerSpace = PdfPageTemplateElement(pageSize.Width, margins.Top) headerSpace.Foreground = True doc.Template.Top = headerSpace # Initialize the x and y coordinate points x = margins.Left y = 0.0 # Set font, brush, pen, and ext alignment format font = PdfTrueTypeFont("Arial", 10.0, PdfFontStyle.Italic, True) brush = PdfBrushes.get_Gray() pen = PdfPen(PdfBrushes.get_Gray(), 1.0) leftAlign = PdfTextAlignment.Left # Load the header image and get its height and width values headerImage = PdfImage.FromFile("E:\Administrator\Python1\header.png") width = headerImage.Width height = headerImage.Height unitCvtr = PdfUnitConvertor() pointWidth = unitCvtr.ConvertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point) pointFeight = unitCvtr.ConvertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point) # Draw a header image at the specified position headerSpace.Graphics.DrawImage(headerImage, headerSpace.Width-x-pointWidth, headerSpace.Height-pointFeight) # Draw the header text at the specified place headerSpace.Graphics.DrawString("E-iceblue Co. Ltd.\nwww.e-iceblue.com", font, brush, x, headerSpace.Height-font.Height*2, PdfStringFormat(leftAlign)) # Draw the header line at the specified position headerSpace.Graphics.DrawLine(pen, x, margins.Top, pageSize.Width - x, margins.Top) # Create a PdfDocument object doc = PdfDocument() # Set the page size and margins pageSize =PdfPageSize.A4() doc.PageSettings.Size = pageSize doc.PageSettings.Margins = PdfMargins(0.0) # Create a new PdfMargins object to set the size of the header, footer, and left and right templates margins = PdfMargins(50.0, 50.0, 50.0, 50.0) doc.Template.Left = PdfPageTemplateElement(margins.Left, pageSize.Height-margins.Bottom-margins.Top) doc.Template.Right = PdfPageTemplateElement(margins.Right, pageSize.Height-margins.Bottom-margins.Top) doc.Template.Bottom = PdfPageTemplateElement(pageSize.Width, margins.Bottom) # Call CreateHeaderTemplate() to add a header CreateHeaderTemplate(doc, pageSize, margins) # Add pages according to the settings above page = doc.Pages.Add() # Define the font and brush to be used for the page content font = PdfTrueTypeFont("Arial", 14.0, PdfFontStyle.Regular, True) brush = PdfBrushes.get_Blue() # Draw text on the page text = "Adding a header using Spire.PDF for Python" page.Canvas.DrawString(text, font, brush, 0.0, 20.0) # Save the document as PDF doc.SaveToFile("output/result.pdf", FileFormat.PDF) # Dispose document objects doc.Close()
Adding A Footer When Creating A New PDF Document with Python
The following is about how to add text, lines, and page content to the footer by Spire.PDF for Python when creating a new PDF:
Part 1: Customize CreateFooterTemplate() to design footer template elements
- Create a PdfPageTemplateElement object.
- Define PdfTrueTypeFont, PdfBrushes, PdfPen, and PdfTextAlignment to set font, brush, pen, and the text alignment format for drawing the content of footers.
- Draw lines and text in the footer template element using PdfPageTemplateElement Graphics.DrawString() and PdfPageTemplateElement Graphics.DrawLine() methods.
- Create PdfPageNumberField () and PdfPageCountField() objects.
- Create a PdfCompositeField() object to set the composite format and convert it to a PdfGraphicsWidget type. Use PdfGraphicsWidget.Draw() method to draw the page number field content.
Part 2: Create PDF document objects and call the custom method above to add the footer
- Create a PdfDocument object.
- Set page size using PdfDocoment.PageSettings.Size. Reset the top, bottom, left, and right margins to 0 by PageSettings.Margins.
- Create a new PdfMargins object to set the sizes of the header, footer, and left and right templates.
- Call the custom method CreateFooterTemplate() to add a Footer.
- Add pages using PdfDocument.Pages.Add() method.
- Define PdfTrueTypeFont and PdfBrushes to set font and brushes for drawing the main content.
- Draw content in the specified area on the newly created page using PdfPageBase.Canvas.DrawString() method.
- Save the resulting file using PdfDocument.SaveToFile() method.
- Python
from spire.pdf.common import * from spire.pdf import * # Define CreateFooterTemplate() def CreateFooterTemplate(doc, pageSize, margins): # Create a footer template with specified sizes footerSpace = PdfPageTemplateElement(pageSize.Width, margins.Bottom) footerSpace.Foreground = True doc.Template.Bottom = footerSpace # Initialize the x and y coordinate points x = margins.Left y = 0.0 # Set font, brush, pen, and ext alignment format font = PdfTrueTypeFont("Arial", 12.0, PdfFontStyle.Italic, True) brush = PdfBrushes.get_Gray() pen = PdfPen(PdfBrushes.get_Gray(), 1.0) leftAlign = PdfTextAlignment.Left # Draw footer lines at the specified place footerSpace.Graphics.DrawLine(pen, x, y, pageSize.Width - x, y) # Draw footer text at the specified position footerSpace.Graphics.DrawString("email: sales @e-iceblue.com\ntel:028-81705109 ", font, brush, x, y, PdfStringFormat(leftAlign)) # Create fields for page number and total page count number = PdfPageNumberField() count = PdfPageCountField() listAutomaticField = [number, count] # Create a composite field and set string formatting for drawing compositeField = PdfCompositeField(font, PdfBrushes.get_Gray(), "Page {0} of {1}", listAutomaticField) compositeField.StringFormat = PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Top) size = font.MeasureString(compositeField.Text) compositeField.Bounds = RectangleF(pageSize.Width -x-size.Width, y, size.Width, size.Height) newTemplate = compositeField templateGraphicsWidget = PdfGraphicsWidget(newTemplate.Ptr) templateGraphicsWidget.Draw(footerSpace.Graphics) # Create a PdfDocument object doc = PdfDocument() # Set page sizes and the margin pageSize =PdfPageSize.A4() doc.PageSettings.Size = pageSize doc.PageSettings.Margins = PdfMargins(0.0) # Create a new PdfMargins object for setting sizes of the header, footer, and left and right templates margins = PdfMargins(50.0, 50.0, 50.0, 50.0) doc.Template.Left = PdfPageTemplateElement(margins.Left, pageSize.Height-margins.Top-margins.Bottom) doc.Template.Right = PdfPageTemplateElement(margins.Right, pageSize.Height-margins.Top-margins.Bottom) doc.Template.Top = PdfPageTemplateElement(pageSize.Width, margins.Top) # Call CreateFooterTemplate() to add a footer CreateFooterTemplate(doc, pageSize, margins) # Add pages according to the settings above page = doc.Pages.Add() # Create font and brush for page content font = PdfTrueTypeFont("Arial", 14.0, PdfFontStyle.Regular, True) brush = PdfBrushes.get_Blue() # Draw text on the page text = "Adding a footer using Spire.PDF for Python" page.Canvas.DrawString(text, font, brush, 0.0, pageSize.Height-margins.Bottom-margins.Top-font.Height-20) # Save the document as PDF doc.SaveToFile("output/result.pdf", FileFormat.PDF) # Dispose document object doc.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.
Python: Add Header and Footer to an Existing PDF Document
In the realm of document management, the ability to add headers and footers to PDFs has become an essential feature. This functionality allows individuals and businesses to enhance the visual appeal, branding, and organization of their PDF documents.
By incorporating headers and footers, users can customize their PDFs with important contextual information, such as document titles, page numbers, logos, dates, copyright notices, or confidentiality disclaimers. This not only helps establish a professional look but also improves document navigation and ensures compliance with legal requirements.
In this article, we will delve into the process of seamlessly integrating headers and footers into existing PDF files by using the Spire.PDF for Python library.
Install Spire.PDF for Python
This scenario requires Spire.PDF for Python and plum-dispatch v1.7.4. They can be easily installed in your Windows through the following pip command.
pip install Spire.PDF
If you are unsure how to install, please refer to this tutorial: How to Install Spire.PDF for Python on Windows
Coordinate System in an Existing PDF
When using Spire.PDF for Python to manipulate an existing PDF document, the coordinate system's origin is positioned at the top left corner of the page. The x-axis extends to the right, while the y-axis extends downward.
Understanding coordinate system is crucial for us, as nearly all newly added elements on a PDF page need to be positioned using specified coordinates. The process of creating headers and footers on PDF pages involves adding text, images, shapes, automatic fields, or other elements to the upper or lower margins of the page at designated coordinates.
Classes and Methods for Creating Header and Footer
In Spire.PDF for Python, there are several methods available for drawing elements on a PDF page. The PdfCanvas class provides the methods DrawString(), DrawImage(), and DrawLine(), which allow users to draw strings, images, and lines respectively, at specific coordinates on the page.
Additionally, Spire.PDF for Python offers specialized classes such as PdfPageNumberField, PdfPageCountField, and PdfSectionNumberField. These classes enable automatic access to the current page number, page count, and section number. Moreover, these classes include the Draw() method, which facilitates the easy addition of dynamic information to the header or footer section of the PDF document.
Add Header to an Existing PDF Document in Python
A header refers to a section that appears at the top of each page. The header typically contains information such as a logo, document title, date, or any other relevant details that provide context or branding to the document.
To add a header consisting of text, an image, a line and a section number to a PDF document, you can follow these steps:
- Create a PdfDocuemnt object.
- Load an existing PDF document from the specified path.
- Define the header content:
- Specify the text to be added to the header.
- Load an image for the header.
- Create a PdfSectionNumberField object to get the current section number, and create a PdfCompositeField object to combine text and the section number in a single field.
- Add the header to each page: Iterate through each page of the PDF document and add the header content at the designated position by using the Canvas.DrawString(), Canvas.DrawImage(), Canvas.DrawLine(), and PdfCompositeField.Draw() methods. When calling these methods, you need to consider the page size and margins when determining the position.
- Save the modified PDF to a new file or overwrite the existing file.
- Python
from spire.pdf.common import * from spire.pdf import * # Create a PdfDocument object doc = PdfDocument() # Load a PDF file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf") # Load an image headerImage = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\Logo-Small.png") # Get the image width in pixel width = headerImage.Width # Get the image width in point unitCvtr = PdfUnitConvertor() pointWidth = unitCvtr.ConvertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point) # Create font, brush and pen firstFont = PdfTrueTypeFont("Times New Roman", 18.0, PdfFontStyle.Bold, True) secondFont = PdfTrueTypeFont("Times New Roman", 12.0, PdfFontStyle.Regular, True) brush = PdfBrushes.get_DarkBlue() pen = PdfPen(PdfBrushes.get_Black(), 1.5) # Specify text to add to header headerText = "TERMS OF SERVICE" # Create a PdfSectionNumberField object sectionField = PdfSectionNumberField(firstFont, brush) # Create a PdfCompositeField object compositeField = PdfCompositeField(secondFont, brush, "Section: [{0}]", [sectionField]) # Set the location of the composite field compositeField.Location = PointF(72.0, 45.0) # Iterate throuh the pages in the document for i in range(doc.Pages.Count): # Get a specific page page = doc.Pages[i] # Draw an image at the specified position page.Canvas.DrawImage(headerImage, page.ActualSize.Width - pointWidth - 72.0, 20.0) # Draw a string at the specified position page.Canvas.DrawString(headerText, firstFont, brush, 72.0, 25.0) # Draw a line at the specified position page.Canvas.DrawLine(pen, 72.0, 65.0, page.ActualSize.Width - 72.0, 65.0) # Draw composite on the page compositeField.Draw(page.Canvas, 0.0, 0.0) # Save the changes to a different PDF file doc.SaveToFile("Output/AddHeader.pdf") # Dispose resources doc.Dispose()
Add Footer to an Existing PDF Document in Python
A footer refers to a section that appears at the bottom of each page. The footer may contain information such as page numbers, copyright information, author name, date, or any other relevant details that provide additional context or navigation aids to the reader.
To add a footer which includes a line and "Page X of Y" to a PDF document, follow the steps below.
- Create a PdfDocuemnt object.
- Load an existing PDF document from the specified path.
- Define the footer content: Create a PdfPageNumberField object to get the current page number, and a PdfPageCountField object to get the total page count. In order to create a "Page X of Y" format, you can utilize a PdfCompositeField object to combine text and these two automatic fields in a single field.
- Add the footer to each page: Iterate through each page of the PDF document and add a line using the Canvas.DrawLine() method. Add the page number and page count to the footer space using the PdfCompositeField.Draw() method. When calling these methods, you need to consider the page size and margins when determining the position.
- Save the modified PDF to a new file or overwrite the existing file.
- Python
from spire.pdf.common import * from spire.pdf import * # Create a PdfDocument object doc = PdfDocument() # Load a PDF file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf") # Create font, brush and pen font = PdfTrueTypeFont("Times New Roman", 12.0, PdfFontStyle.Bold, True) brush = PdfBrushes.get_Black() pen = PdfPen(brush, 1.5) # Create a PdfPageNumberField object and a PdfPageCountField object pageNumberField = PdfPageNumberField() pageCountField = PdfPageCountField() # Create a PdfCompositeField object to combine page count field and page number field in a single string compositeField = PdfCompositeField(font, brush, "Page {0} of {1}", [pageNumberField, pageCountField]) # Get the page size pageSize = doc.Pages[0].Size # Set the location of the composite field compositeField.Location = PointF(72.0, pageSize.Height - 45.0) # Iterate through the pages in the document for i in range(doc.Pages.Count): # Get a specific page page = doc.Pages[i] # Draw a line at the specified position page.Canvas.DrawLine(pen, 72.0, pageSize.Height - 50.0, pageSize.Width - 72.0, pageSize.Height - 50.0) # Draw the composite field on the page compositeField.Draw(page.Canvas, 0.0, 0.0) # Save to a different PDF file doc.SaveToFile("Output/AddFooter.pdf") # Dispose resources doc.Dispose()
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.