Annotate PDFs⚓︎
PyPDFForm supports adding non-form-field annotations to PDFs.
This section uses this PDF as an example.
Understanding the PDF coordinate system is necessary for this section.
Optional parameters are marked with an # optional comment.
Create text annotations⚓︎
Text annotations appear as sticky notes on a PDF. To create them, use the PdfWrapper.annotate method and pass a list of annotations:
from PyPDFForm import Annotations, PdfWrapper
annotations = [
Annotations.TextAnnotation(
page_number=1,
x=310,
y=663,
contents="this is an annotation", # optional
title="First Annotation", # optional
),
Annotations.TextAnnotation(
page_number=2,
x=310,
y=672,
contents="this is another annotation", # optional
title="Second Annotation", # optional
icon=Annotations.TextAnnotation.comment_icon, # optional (1)
),
]
pdf = PdfWrapper("sample_template.pdf").annotate(annotations)
pdf.write("output.pdf")
- Default is
note_icon. Other options arecomment_icon,help_icon,key_icon, andinsert_icon.
Create link annotations⚓︎
A link annotation navigates to a specified destination when clicked. A destination can be a URI or another page of the same PDF.
The following snippet creates a link annotation on top of the text TEST PDF TEMPLATE that redirects to https://www.google.com/:
The following snippet creates a link annotation on top of the text TEST PDF TEMPLATE that redirects to the second page of the PDF:
Create text markup annotations⚓︎
There are four types of text markup annotations: highlight, underline, squiggly, and strikeout. To create them, specify the coordinates and dimensions for the bounding box:
Create rubber stamp annotations⚓︎
Note
Currently, Chromium-based browsers have trouble rendering rubber stamp annotations correctly.
A rubber stamp annotation displays text or graphics intended to look as if they were stamped on the page with a rubber stamp. PyPDFForm supports a collection of predefined rubber stamps you can use to annotate PDFs:
from PyPDFForm import Annotations, PdfWrapper
pdf = PdfWrapper("sample_template.pdf").annotate(
[
Annotations.RubberStampAnnotation(
page_number=1,
x=70,
y=720,
width=95,
height=20,
name=Annotations.RubberStampAnnotation.approved, # optional (1)
)
]
)
pdf.write("output.pdf")
- Supported options are
approved,experimental,not_approved,as_is,expired,not_for_public_release,confidential,final,sold,departmental,for_comment,top_secret,draft, andfor_public_release.