Skip to content

Other utilities⚓︎

PyPDFForm offers additional utilities similar to other PDF libraries.

This section of the documentation uses this PDF as an example.

Blank PDFs⚓︎

Use the BlankPage class with PdfWrapper to create blank PDFs.

The following example generates a PDF with a single blank page:

from PyPDFForm import BlankPage, PdfWrapper

blank_pdf = PdfWrapper(BlankPage())

blank_pdf.write("output.pdf")

By default, BlankPage creates a letter-size blank page (612 x 792 points, or 8.5 x 11 inches). To change the dimensions, specify width and height in points:

from PyPDFForm import BlankPage, PdfWrapper

blank_pdf = PdfWrapper(BlankPage(width=595.35, height=841.995))  # A4 size

blank_pdf.write("output.pdf")

To create a blank PDF with multiple pages, multiply the BlankPage object by the number of pages you need:

from PyPDFForm import BlankPage, PdfWrapper

blank_pdf = PdfWrapper(BlankPage() * 3)  # 3 pages of letter size

blank_pdf.write("output.pdf")

From the CLI, create blank PDFs with create blank:

pypdfform create blank -o output.pdf
pypdfform create blank -o output.pdf \
    --width 595.35 \
    --height 841.995
pypdfform create blank -o output.pdf -c 3

Extract pages⚓︎

The PdfWrapper object has a .pages attribute, which is a PdfArray containing one PdfWrapper object per page:

from PyPDFForm import PdfWrapper

first_page = PdfWrapper("sample_template.pdf").pages[0]
first_page.fill(
    {
        "test": "test_1",
        "check": True,
    },
)

first_page.write("output.pdf")

The CLI equivalent is create extract:

pypdfform create extract sample_template.pdf \
    --start 1 \
    --end 1 \
    -o output.pdf

Merge multiple PDFs⚓︎

Note

When merging PDF forms with duplicate field names, PyPDFForm automatically renames conflicting fields by appending a unique, randomly generated suffix. This means some field names in the merged PDF will differ from their original names.

To avoid automatic renaming, give duplicate fields unique names across all input PDFs before merging. See Change field name.

You can merge multiple PDF files by adding their PdfWrapper objects together. For example, to merge this PDF and this PDF:

from PyPDFForm import PdfWrapper

pdf_one = PdfWrapper("dummy.pdf")
pdf_two = PdfWrapper("sample_template.pdf")
merged = pdf_one + pdf_two

merged.write("output.pdf")
from PyPDFForm import PdfWrapper

pdf_one = PdfWrapper("dummy.pdf")
pdf_two = PdfWrapper("sample_template.pdf")
merged = pdf_two.pages[0] + pdf_one + pdf_two.pages[1:]

merged.write("output.pdf")

When merging a large number of PDF files, use the PdfArray.merge method for better performance:

from PyPDFForm import PdfArray, PdfWrapper

pdfs = PdfArray(
    [
        PdfWrapper("dummy.pdf"),
        PdfWrapper("sample_template.pdf"),
        # can get very large
    ]
)
merged = pdfs.merge()

merged.write("output.pdf")

For CLI merges, pass the input PDFs to create merge:

pypdfform create merge dummy.pdf sample_template.pdf -o output.pdf
pypdfform create extract sample_template.pdf --start 1 --end 1 -o first_page.pdf
pypdfform create extract sample_template.pdf --start 2 -o remaining_pages.pdf
pypdfform create merge first_page.pdf dummy.pdf remaining_pages.pdf -o output.pdf

Change PDF version⚓︎

PyPDFForm allows you to set the PDF version to any supported value up to 2.0:

from PyPDFForm import PdfWrapper

new_version = PdfWrapper("sample_template.pdf").change_version("2.0")
new_version.write("output.pdf")

From the CLI, set the version with update version:

pypdfform update version sample_template.pdf -v 2.0 -o output.pdf