<critical_constraints>
❌ NO arbitrary file writes → use provided scripts only
❌ NO loading huge PDFs into memory → process in chunks
❌ NO overwriting originals → backup first
✅ MUST use context managers (with statements)
✅ MUST validate PDFs before processing
✅ MUST handle encrypted PDFs with password
</critical_constraints>
Form Filling (pypdf)
python
from pypdf import PdfReader, PdfWriter
writer = PdfWriter()
writer.append(PdfReader("template.pdf"))
writer.update_page_form_field_values(writer.pages[0], {"name": "John"})
writer.write(open("filled.pdf", "wb"))
Discover Fields
python
fields = PdfReader("form.pdf").get_fields()
Merge PDFs
python
writer = PdfWriter()
for pdf in ["a.pdf", "b.pdf"]:
writer.append(pdf)
writer.write(open("merged.pdf", "wb"))