pdf

Create, read, merge, fill, and secure PDF files using pypdf, reportlab, and pdfplumber.

Updated Aug 21, 2026
One-click install
npx skills add https://github.com/ewtodd/son-of-anton --skill pdf-ewtodd
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: pdf
Source: https://github.com/ewtodd/son-of-anton/tree/main/skills/productivity/pdf
Command: npx skills add https://github.com/ewtodd/son-of-anton --skill pdf-ewtodd

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires pypdf, reportlab, pdfplumber, pypdfium2, Pillow, and includes scripts (resource) and references (resource) components.

What problem does it solve? Working with PDFs programmatically is fragmented across many libraries and error-prone tasks: generating documents, building fillable forms, extracting text and tables, merging files, and encrypting output each require different APIs and careful handling of edge cases like scanned pages and encrypted inputs. ## Core Features & Use Cases - PDF Generation and Forms: Build multi-page documents from JSON specs with reportlab, and create fillable AcroForm forms (text, checkbox, radio, dropdown) with a layout linter and visual overlay review before building. - Extraction and Manipulation: Extract per-page text, tables (JSON/CSV), metadata, and form-field values; merge, split, rotate, watermark, stamp, and compress pages. - Security and Metadata: Encrypt/decrypt with AES-256 passwords, set DocInfo metadata, and manage embedded file attachments. - Use Case: Generate a client invoice as a PDF from a JSON spec, merge it with terms pages, stamp a DRAFT watermark, and encrypt it with a password before sending. ## Quick Start Ask the agent to create a PDF report from a JSON spec, or to extract the text and tables from an existing PDF file you provide.

Frequently Asked Questions about pdf

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I extract text and tables from a PDF in Python?▼

Run pdf_read.py with --text for per-page text via pdfplumber, or --tables to get table rows as JSON plus optional CSV files via --csv-dir. Results print as JSON to stdout for downstream processing.

How do I create a fillable PDF form programmatically?▼

Write a JSON form spec with label_box and entry_box coordinates in PDF points, lint it with pdf_form_layout.py, then build it with pdf_make_form.py using reportlab's acroForm. Fill values later with pdf_fill_form.py from a JSON file.

Can this skill extract text from scanned PDF documents?▼

No. Scanned image-only pages have no text layer, so extraction returns empty strings. The skill detects likely scanned pages via --meta and directs you to export page images and hand them to the ocr-and-documents skill instead.

Does pypdf encryption actually restrict PDF permissions like printing?▼

Only the user password gates content via AES-256 encryption. Owner-password permission flags such as no-print or no-copy are advisory; any PDF library, including pypdf, can read and strip them, so they should never be treated as security.

Why does PDF form flattening sometimes render incorrectly?▼

pypdf's flattening merges widget appearances into page content and works reliably for plain text fields and checkboxes, but can drop or misrender rich text, custom appearance streams, and radio groups. Verify flattened output visually or use Ghostscript as a fallback.