Skip to main content

pdf-tools

Use when the user wants to read, summarise, extract text/tables from, split, merge, or fill a PDF. Explains when to read a PDF visually vs. extract its text, and how to manipulate PDFs via code execution.

Source facts

Repository
ag2ai/ag2-assistant
Last source activity
October 2, 2026 at 15:51
Detected SKILL.md language
English
Stars
12
Forks
1

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
pdf-tools
description
Use when the user wants to read, summarise, extract text/tables from, split, merge, or fill a PDF. Explains when to read a PDF visually vs. extract its text, and how to manipulate PDFs via code execution.
version
1.0
license
Apache-2.0
# Working with PDFs ## Reading a PDF - To **understand or summarise** a PDF the user points you at, use the `read_file` tool with its path. AG2 Assistant hands PDFs to the model as visual content, so this works even for **scanned PDFs with no text layer** (forms, signed documents, image scans). Ask permission the first time if prompted. - For a **born-digital PDF where you need the exact text** (to quote precisely, count, or post-process), extract the text via code execution instead (below). ## Manipulating a PDF (code execution) Use the code-execution tool. Prefer `pypdf` (pure-Python, no system deps); fall back to `pdfplumber` for tables. Install on first use if missing (`pip install pypdf`). - **Extract text:** ```python from pypdf import PdfReader r = PdfReader("in.pdf") print("\n".join(page.extract_text() or "" for page in r.pages)) ``` - **Split / select pages:** ```python from pypdf import PdfReader, PdfWriter r = PdfReader("in.pdf") w = PdfWriter() for i in (0, 1, 2): # first three pages w.add_page(r.pages[i]) with open("out.pdf", "wb") as f: w.write(f) ``` - **Merge:** add pages from several `PdfReader`s into one `PdfWriter`. - **Tables:** `pdfplumber` → `page.extract_tables()` is more reliable than plain text extraction for tabular data. ## Tips - If text extraction returns empty strings, the PDF is scanned/image-only — read it visually with `read_file` instead. - Always tell the user where you wrote any output file. - Don't fabricate content you couldn't extract — say what failed and ask how to proceed.
View on GitHub