How to Annotate A PDF File in Python

Updated November 13, 2023

PDF documents have become an integral part of modern business and communication. They offer a reliable way to share and preserve information across different platforms while maintaining the document's original formatting. However, sometimes it becomes necessary to enhance these documents by adding new annotations, comments, or highlights to emphasize certain points. Additionally, the ability to link annotation, file attachments, add annotations on the same page, and stamp annotation can further enhance document clarity and provide visual context.

In this article, we will explore how to annotate PDFs using IronPDF, a powerful Python library that provides versatile tools for working with PDF documents.

Understanding PDF Annotation

PDF annotation is the process of adding additional information, notes, highlights, or other visual elements to a PDF document. Annotations serve as a way to provide context, collaborate on documents, and enhance the readability of the content. Common types of annotations include text comments, highlighting, underlining, strikethrough, shapes, and even adding images or stamps.

IronPDF - Python PDF Library

IronPDF is a popular Python library that enables developers to work with PDF documents seamlessly. It offers a comprehensive set of features, including PDF creation, manipulation, and annotation. With IronPDF, you can easily integrate PDF generation and modification capabilities into your Python applications, allowing you to automate tasks and streamline document workflows.

IronPDF supports various annotation types, allowing you to create a rich and interactive reading experience for your PDF documents. Whether you want to add textual explanations using text annotation, highlight important sections, or even include stamps to mark documents as "Approved" or "Confidential," IronPDF has you covered.


Before we dive into annotating PDFs using IronPDF, ensure you have the following prerequisites in place:

  1. Python: Ensure that Python is installed on your computer. To download the latest version, visit the official Python website (
  2. PyCharm: Install PyCharm, a popular integrated development environment (IDE) for Python. You can download it from You can use any IDE of your choice as well.
  3. IronPDF Library: Install the IronPDF library using the following command in the terminal:

    pip3 install IronPDF

    How to Annotate A PDF File in Python: Figure 1

  4. .NET 6.0 Runtime: IronPDF for Python relies on a .NET 6.0 technology to work properly. This means you need to have .NET 6.0 runtime installed on your computer to use IronPDF Python effectively. Most likely it will automatically install with IronPDF dependencies at the time of project execution. If not then you can download it from

Note: When installing IronPDF using pip3(Python Package Manager), it is important to ensure that the IronPDF installation path is included in the system's PATH variable. This step is crucial to ensure that pip can locate the IronPDF package and its associated components during installation and usage.

Creating a Project in PyCharm

Let's start by creating a new project in PyCharm:

  1. Open PyCharm and click on "Create New Project."

    How to Annotate A PDF File in Python: Figure 2

  2. Choose a location for your project and select the appropriate interpreter (Python).

    How to Annotate A PDF File in Python: Figure 3

  3. Click Create and the project is created. The file will also be created where we will write the code for execution.

Now that our project is set up, let's proceed to annotate a PDF using IronPDF.

Steps to Annotate PDF Documents in Python

Step 1 Importing the IronPDF Library

The first line imports the required modules from the IronPDF library, allowing us to access the necessary classes and functions for PDF manipulation and annotation.

import ironpdf as ipdf

Step 2 Loading an Existing PDF Document

In this step, an existing PDF file named "existing.pdf" is loaded using the PdfDocument class. This document will be used as the base to add annotations. Also, set the page index on which supported annotation types will be added.

pdf = ipdf.PdfDocument("existing.pdf")
pageIndex = 0

Step 3 Setting Annotation Parameters

The following lines of code define various properties for text annotation that will be added to the PDF. These properties provide information about the annotation's appearance and behavior:

annotation = ipdf.TextAnnotation(pageIndex)
annotation.Title = "This is the major title"
annotation.Subject = "This is a subtitle"
annotation.Contents = "This is the long 'sticky note' comment content..."
annotation.Icon = ipdf.TextAnnotation.AnnotationIcon.Help
annotation.X = 150
annotation.Y = 200
annotation.Width = 200
annotation.Height = 50
annotation.Opacity = 0.9
annotation.Printable = False
annotation.Hidden = False
annotation.OpenByDefault = True
annotation.ReadOnly = False
annotation.Rotatable = True

Here's what each property represents:

  • Title: The major title of the annotation.
  • Subject: A subtitle or additional information about the annotation.
  • Contents: The main content of the annotation, resembles a "sticky note" comment.
  • Icon: The visual icon associated with the annotation (in this case, a help icon).
  • X and Y: The coordinates of the annotation's top-left corner on the page.
  • Width and Height: The dimensions of the annotation's bounding box.
  • Opacity: The opacity level of the annotation (ranging from 0 to 1).
  • Printable: Whether the annotation should be printed.
  • Hidden: Whether the annotation is initially hidden.
  • OpenByDefault: Whether the annotation should be open by default.
  • ReadOnly: Whether the annotation is read-only.
  • Rotatable: Whether the annotation can be rotated.

For more annotation types and properties visit this code examples page.

Step 4 Adding the Annotation to the PDF

The following line of code adds the created text annotation to a specific page within the PDF document:


Step 5 Saving the Annotated PDF

Finally, the updated PDF document with the added annotation is saved using the SaveAs method:


Step 6 Running the Script

Now, let's put all the code together and run the script in the PyCharm project we created.

  1. To run the script within PyCharm, right-click anywhere within the script editor and select Run annotatePDF.
  2. PyCharm will execute the script, and you will see the output and any potential errors in the Run console at the bottom of the IDE.
  3. Once the script completes, you can find the annotated PDF ("annotated.pdf") in the same directory as your project.

How to Annotate A PDF File in Python: Figure 4


By following the steps outlined in this article, you can harness the power of IronPDF to automate your PDF annotation workflows and improve your document management processes. PDF annotations are a valuable feature that enhances the utility of PDF documents by allowing users to add context, highlight key points, and collaborate effectively. IronPDF simplifies the process to link annotations and edit existing annotations in PDF documents, offering a robust set of tools for creating, modifying, and annotating programmatically. So go ahead, explore IronPDF, and start annotating PDFs with ease!

Overall, IronPDF for Python is a versatile library that empowers developers to handle a wide range of PDF-related tasks using Python code, saving time and effort while maintaining the flexibility to create customized document workflows.

IronPDF is available for a free trial to test out its complete functionality in commercial mode. However, it can be licensed with its lite package starting from $749. Download IronPDF for Python from here.

How to Extract Text From PDF Line By Line
How to Add or Remove PDF Pages Using Python

Ready to get started? Version: 2024.5 just released

Free pip Install View Licenses >