PDF Editor

PDF Editor is a free agent skill maintained by Scopeful. It teaches an AI coding agent such as Claude Code, Cursor, Windsurf or Codex how to drive this tool correctly, so you do not have to re-explain it every session. Every published Scopeful skill is free and the install command is public, with no sign-in required. Scopeful also tracks hand-verified USD pricing for 39 AI creative tools at https://www.scopeful.org/tools.

Merge, split, and edit PDFs locally.

Tags: pdf, documents

Reference


name: pdf-editor description: Use this skill whenever the user wants to do anything to a PDF file locally. Triggers include "merge these PDFs", "split this PDF", "extract pages", "compress this PDF", "fill this form", "OCR this scan", "make this PDF searchable", "rotate pages", "remove a page", "pull the text/tables/images out", "password-protect this PDF", or "remove the password". Everything runs locally with CLI tools — files never leave the machine.

PDF Editor

Local-first PDF surgery. No upload sites, no watermarks, no "free trial". Every recipe below runs on the user's machine.

Ground rules

  1. Never overwrite the original. Output to name-edited.pdf (or similar).
  2. Check the file first: pdfinfo in.pdf — pages, encryption, size. If encrypted, ask for the password before promising anything.
  3. Report page counts and sizes after every operation so the user can sanity-check.
  4. Tool preference: qpdf for page surgery, ocrmypdf for scans, ghostscript for compression, poppler-utils for extraction, pdftk (or Python pypdf) for forms.

Page surgery (qpdf)

# Merge, in order:
qpdf --empty --pages a.pdf b.pdf c.pdf -- merged.pdf
# Extract pages 1-3 and 7:
qpdf in.pdf --pages . 1-3,7 -- extracted.pdf
# Delete pages 4-5 (keep everything else, e.g. from a 12-page doc):
qpdf in.pdf --pages . 1-3,6-12 -- out.pdf
# Split into one file per page:
qpdf --split-pages in.pdf page-%d.pdf
# Rotate page 2 by 90° clockwise:
qpdf in.pdf out.pdf --rotate=+90:2
# Reverse page order:
qpdf in.pdf --pages . z-1 -- reversed.pdf

Compress (ghostscript)

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
   -dNOPAUSE -dQUIET -dBATCH -sOutputFile=smaller.pdf in.pdf

/screen = smallest (72dpi images), /ebook = good default (150dpi), /prepress = print quality. If the PDF is scanned images, ocrmypdf --optimize 3 often compresses better AND adds a text layer in one pass.

OCR — make scans searchable (ocrmypdf)

ocrmypdf in.pdf searchable.pdf                      # English default
ocrmypdf -l eng+deu --rotate-pages --deskew in.pdf out.pdf   # multi-language, fix crooked scans
ocrmypdf --redo-ocr in.pdf out.pdf                  # replace bad existing OCR

Language packs: apt install tesseract-ocr-deu (etc.). After OCR, verify with pdftotext searchable.pdf - | head.

Extract content (poppler-utils)

pdftotext -layout in.pdf out.txt      # text, preserving column layout
pdfimages -all in.pdf img-prefix      # every embedded image, original format
pdftoppm -png -r 150 in.pdf page      # pages as PNGs (for review or slides)

Tables: pdftotext -layout first; if the table structure collapses, use Python pdfplumber and write CSV.

Forms

# List form fields:
pdftk form.pdf dump_data_fields

Fill with Python (pypdf) — more reliable than hand-built FDF:

from pypdf import PdfReader, PdfWriter
reader = PdfReader("form.pdf"); writer = PdfWriter(); writer.append(reader)
writer.update_page_form_field_values(writer.pages[0],
    {"Name": "Igor Gridel", "Date": "2026-07-11"}, auto_regenerate=False)
with open("filled.pdf", "wb") as f: writer.write(f)

No AcroForm fields (flat scan)? Say so, then overlay text at coordinates with reportlab + merge, or OCR first.

Passwords

# Remove (user must provide the password — never attempt to crack):
qpdf --password=THEPASS --decrypt locked.pdf unlocked.pdf
# Add (256-bit AES):
qpdf --encrypt USERPASS OWNERPASS 256 -- in.pdf locked.pdf

Watermark / stamp

qpdf in.pdf out.pdf --overlay stamp.pdf --    # stamp.pdf = 1-page overlay

Generate stamp.pdf with reportlab (diagonal grey "DRAFT", etc.) when the user doesn't have one.

Decision guide

User says Recipe
"combine / merge" qpdf merge
"too big to email" ghostscript /ebook; scans → ocrmypdf --optimize 3
"can't search / it's a scan" ocrmypdf
"fill this out" dump fields → pypdf fill
"get the text/tables out" pdftotext -layout → pdfplumber fallback
"remove password" (has it) qpdf --decrypt

Requirements

qpdf, ghostscript, poppler-utils, ocrmypdf (pulls tesseract), optional pdftk. All via brew/apt/winget. Python fallbacks: pypdf, pdfplumber, reportlab.