Make PDF Forms Non-Editable with Python

Alice Yang
4 min readJan 2, 2024

--

Make PDF Forms Non-Editable with Python
Make PDF Forms Non-Editable with Python

PDF forms have become a popular way to collect and exchange information electronically. They offer convenience, efficiency, and a professional appearance. However, there are situations where you may want to ensure that the data entered into a PDF form remains intact and unmodifiable. In this article, we will explore the methods to make PDF forms non-editable using Python.

We will discuss the following topics:

Python Library to Make PDF Forms Non-Editable

To make PDF forms non-editable with Python, we can use the Spire.PDF for Python library.

Spire.PDF for Python is a feature-rich and user-friendly library that supports creating, reading, editing, and converting PDF files within Python applications. With this library, you can perform a wide range of manipulations on PDFs, including adding text or images, extracting text or images, replacing text or images, adding digital signatures, adding or deleting pages, merging or splitting PDFs, creating bookmarks, adding text or image watermarks, inserting fillable forms and many more. In addition, you are also able to convert PDF files to various file formats, such as Word, Excel, images, HTML, SVG, XPS, OFD, PCL, and PostScript.

You can install Spire.PDF for Python from PyPI using the following pip command:

pip install Spire.Pdf

For more detailed information about the installation, you can check this official documentation: How to Install Spire.PDF for Python in VS Code.

Flatten All Form Fields in PDF with Python

One effective method to make PDF forms non-editable is by flattening the form fields. Flattening the form fields means converting the interactive form elements into static content. It ensures that the entered information remains intact and unalterable.

Here is a simple example that shows how to flatten all the forms in a PDF using Python and Spire.PDF for Python:

from spire.pdf.common import *
from spire.pdf import *

# Specify the input and output PDF file paths
inputFile = "FormFields.pdf"
outputFile = "FlattenAllFormFields.pdf"

# Create an object of the PdfDocument class
doc = PdfDocument()
# Load the PDF file
doc.LoadFromFile(inputFile)

# Flatten the form fields in the file
doc.Form.IsFlatten = True

# Save the resulting file
doc.SaveToFile(outputFile)
doc.Close()

Flatten a Specific Form Field in PDF with Python

Flattening a specific form allows you to make only the chosen field non-editable while preserving the user’s ability to interact with other fields.

Here is a simple example that shows how to flatten only a specific form in a PDF using Python and Spire.PDF for Python:

from spire.pdf.common import *
from spire.pdf import *

# Specify the input and output PDF file paths
inputFile = "FormFields.pdf"
outputFile = "FlattenSpecificFormField.pdf"

# Create an object of the PdfDocument class
doc = PdfDocument()
# Load the PDF file
doc.LoadFromFile(inputFile)

# Get the forms of the file
loadedForm = doc.Form

# Get the first form
formWidget = PdfFormWidget(loadedForm)
form = formWidget.FieldsWidget.get_Item(0)

# Flatten the first form
form.Flatten = True

# Save the resulting file
doc.SaveToFile(outputFile)
doc.Close()

Make All Form Fields in PDF Read Only with Python

Another way to make PDF forms non-editable is by setting them to read-only mode. By enabling read-only mode, you can safeguard the integrity of the forms and prevent unintended modifications.

Here is a simple example that shows how to set all forms in a PDF to read-only mode using Python and Spire.PDF for Python:

from spire.pdf.common import *
from spire.pdf import *

# Specify the input and output PDF file paths
inputFile = "FormFields.pdf"
outputFile = "MakeAllFormFieldsReadOnly.pdf"

# Create an object of the PdfDocument class
doc = PdfDocument()
# Load the PDF file
doc.LoadFromFile(inputFile)

# Set the form fields in the file to read-only mode
doc.Form.ReadOnly = True

# Save the resulting file
doc.SaveToFile(outputFile)
doc.Close()

Make a Specific Form Field in PDF Read Only with Python

In addition to making all forms in a PDF read-only, you have the flexibility to selectively set specific forms to read-only mode.

Here is a simple example that shows how to set a specific form in a PDF to read-only mode using Python and Spire.PDF for Python:

from spire.pdf.common import *
from spire.pdf import *

# Specify the input and output PDF file paths
inputFile = "FormFields.pdf"
outputFile = "MakeSpecificFormFieldReadOnly.pdf"

# Create an object of the PdfDocument class
doc = PdfDocument()
# Load the PDF file
doc.LoadFromFile(inputFile)

# Get the forms of the file
loadedForm = doc.Form

# Get the first form
formWidget = PdfFormWidget(loadedForm)
form = formWidget.FieldsWidget.get_Item(0)

# Set the first form to read-only mode
form.ReadOnly = True

# Save the resulting file
doc.SaveToFile(outputFile)
doc.Close()

Conclusion

This article demonstrated how to make PDF forms Non-Editable by flattening them or making them read-only using Python. We hope you find it helpful.

Related Topics

--

--

Alice Yang

Skilled senior software developers with five years of experience in all phases of software development life cycle using .NET, Java and C++ languages.