<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)
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
fields = PdfReader("form.pdf").get_fields()
Merge PDFs
writer = PdfWriter() for pdf in ["a.pdf", "b.pdf"]: writer.append(pdf) writer.write(open("merged.pdf", "wb"))