Skip to content
Back to skills

215 Name Skill 2cf72d42

ASecurity

Extract text and tables from PDF files, merge/split documents, create PDFs, fill forms. Use when working with PDF documents.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 11, 2026
businesspythongobash

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 215-name-skill_2cf72d42 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 215 Name Skill 2cf72d42?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 215 Name Skill 2cf72d42
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-215-name-skill-2cf72d42/badge)](https://www.skillsdirectory.com/skills/tools-only-215-name-skill-2cf72d42)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pdf-processing
description: Extract text and tables from PDF files, merge/split documents, create PDFs, fill forms. Use when working with PDF documents.
version: 1.0.0
author: PDF Skills Team
tags:
  - pdf
  - document-processing
  - data-extraction
---

# PDF Processing Skill

## When to use this skill

Use this skill when the user mentions:
- Reading or extracting content from PDFs
- Working with tables in PDF documents
- Merging, splitting, or reorganizing PDFs
- Creating new PDF documents
- Filling out PDF forms
- Processing scanned PDFs (OCR)

## Progressive Disclosure Strategy

### Level 1: Quick Start
When user asks about PDF:
1. Ask ONLY for the file path
2. Choose the appropriate script based on their need
3. Execute the script with minimal parameters
4. Show results

### Level 2: Core Operations
Only reveal these options after initial execution or if user asks.

### Level 3: Advanced Features
Only introduce when user explicitly needs them.

## Available Scripts

All scripts are in the `./scripts/` directory. Execute them using bash or python.

### 1. Extract Text: `extract_text.py`

**When to use**: User wants to read PDF content, extract text.

**Usage**:
```bash
python ./scripts/extract_text.py <pdf_path> [--pages PAGES] [--output OUTPUT]
```

**Parameters**:
- `pdf_path`: (required) Path to PDF file
- `--pages`: (optional) Page range, e.g., "1-5" or "1,3,5". Default: all pages
- `--output`: (optional) Output file path. Default: stdout

**Example**:
```bash
# Extract all text
python ./scripts/extract_text.py report.pdf

# Extract specific pages
python ./scripts/extract_text.py report.pdf --pages "1-5"

# Save to file
python ./scripts/extract_text.py report.pdf --output extracted.txt
```

**Progressive disclosure**: Start with just the pdf_path, add options only if user needs them.

### 2. Extract Tables: `extract_tables.py`

**When to use**: User wants to extract tables, data, or spreadsheet content from PDF.

**Usage**:
```bash
python ./scripts/extract_tables.py <pdf_path> [--format FORMAT] [--output OUTPUT]
```

**Parameters**:
- `pdf_path`: (required) Path to PDF file
- `--format`: (optional) Output format: excel, csv, json. Default: excel
- `--output`: (optional) Output file path. Default: auto-generated

**Example**:
```bash
# Extract to Excel (default)
python ./scripts/extract_tables.py financial_report.pdf

# Extract to CSV
python ./scripts/extract_tables.py data.pdf --format csv

# Custom output path
python ./scripts/extract_tables.py data.pdf --output results/tables.xlsx
```

**Progressive disclosure**: Default to Excel format unless user specifies otherwise.

### 3. Merge PDFs: `merge_pdfs.py`

**When to use**: User wants to combine multiple PDFs into one.

**Usage**:
```bash
python ./scripts/merge_pdfs.py <output_path> <pdf1> <pdf2> [pdf3 ...]
```

**Parameters**:
- `output_path`: (required) Path for merged PDF
- `pdf1, pdf2, ...`: (required) PDFs to merge (in order)

**Example**:
```bash
# Merge PDFs
python ./scripts/merge_pdfs.py merged.pdf doc1.pdf doc2.pdf doc3.pdf

# Merge all PDFs in directory
python ./scripts/merge_pdfs.py combined.pdf *.pdf
```

### 4. Split PDF: `split_pdf.py`

**When to use**: User wants to split PDF into separate files.

**Usage**:
```bash
python ./scripts/split_pdf.py <pdf_path> [--mode MODE] [--output-dir OUTPUT_DIR]
```

**Parameters**:
- `pdf_path`: (required) Path to PDF file
- `--mode`: (optional) Split mode: pages (one per file), range. Default: pages
- `--output-dir`: (optional) Output directory. Default: ./split_output

**Example**:
```bash
# Split into individual pages
python ./scripts/split_pdf.py document.pdf

# Split into custom directory
python ./scripts/split_pdf.py document.pdf --output-dir pages/
```

### 5. Create PDF: `create_pdf.py`

**When to use**: User wants to create a PDF from text or content.

**Usage**:
```bash
python ./scripts/create_pdf.py <output_path> [--title TITLE] [--content CONTENT] [--input INPUT_FILE]
```

**Parameters**:
- `output_path`: (required) Path for new PDF
- `--title`: (optional) Document title
- `--content`: (optional) Text content (for short content)
- `--input`: (optional) Text file to read content from

**Example**:
```bash
# From text content
python ./scripts/create_pdf.py report.pdf --title "Monthly Report" --content "Report content here..."

# From text file
python ./scripts/create_pdf.py report.pdf --title "Report" --input content.txt
```

### 6. Fill PDF Form: `fill_form.py`

**When to use**: User needs to fill out a PDF form programmatically.

**Usage**:
```bash
python ./scripts/fill_form.py <form_path> <data_file> <output_path>
```

**Parameters**:
- `form_path`: (required) Path to PDF form
- `data_file`: (required) JSON file with field data
- `output_path`: (required) Path for filled PDF

**Example**:
```bash
# Fill form with data from JSON
python ./scripts/fill_form.py application.pdf data.json filled_application.pdf
```

**See**: `./references/form-filling.md` for data format details.

### 7. OCR PDF: `ocr_pdf.py`

**When to use**: User has scanned/image-based PDF and needs searchable text.

**Usage**:
```bash
python ./scripts/ocr_pdf.py <pdf_path> [--lang LANG] [--output OUTPUT]
```

**Parameters**:
- `pdf_path`: (required) Path to scanned PDF
- `--lang`: (optional) OCR language code. Default: eng
- `--output`: (optional) Output PDF path. Default: <original>_ocr.pdf

**Example**:
```bash
# OCR English document
python ./scripts/ocr_pdf.py scanned.pdf

# OCR with different language
python ./scripts/ocr_pdf.py document.pdf --lang chi_sim
```

**Note**: Requires tesseract-ocr installed on system.

## Interaction Guidelines

### ✅ Good Interaction Pattern

```
User: "I need to read a PDF"
Agent: "I'll help you extract the text. What's the PDF file path?"
User: "report.pdf"
Agent: [Executes] python ./scripts/extract_text.py report.pdf
Agent: "✅ Extracted text from 5 pages. Here's a preview: [shows first 500 chars]
       Would you like to see the full text or extract tables?"
```

### ❌ Poor Interaction Pattern

```
User: "I need to read a PDF"
Agent: "I can extract text, tables, images, metadata. For text I can preserve layout or not, 
       use different encodings, extract specific pages using ranges or lists, 
       output to txt/docx/html. For tables I need to know format (Excel/CSV/JSON), 
       encoding, empty cell handling... Please specify all parameters."
```

### Decision Tree for PDF Tasks

```
User mentions PDF
  ├─ "read", "extract text", "content" → execute extract_text.py
  ├─ "table", "data", "spreadsheet" → execute extract_tables.py
  ├─ "merge", "combine", "join" → execute merge_pdfs.py
  ├─ "split", "separate", "break" → execute split_pdf.py
  ├─ "create", "generate", "make" → execute create_pdf.py
  ├─ "form", "fill out", "application" → execute fill_form.py
  └─ "scanned", "image", "OCR" → execute ocr_pdf.py
```

## Error Handling

If a script fails:
1. Show the error message clearly
2. Suggest common fixes (file not found, missing dependencies)
3. Don't repeat the same command - try alternatives or ask for clarification

**Common errors**:
- `FileNotFoundError`: Check if file path is correct, suggest listing directory
- `ImportError` (pdfplumber, pypdf, etc.): Install missing package
- `No tables found`: Suggest OCR if PDF might be scanned
- `Permission denied`: Check file permissions

## Dependencies

Scripts require these Python packages:
```bash
pip install pdfplumber pypdf reportlab pandas openpyxl pytesseract pdf2image
```

System dependencies:
```bash
# Ubuntu/Debian
sudo apt-get install tesseract-ocr poppler-utils

# macOS
brew install tesseract poppler
```

## Reference Documents

- `./references/form-filling.md`: Detailed guide for PDF form data format
- `./references/ocr-guide.md`: OCR best practices and language codes
- `./references/troubleshooting.md`: Common issues and solutions

## Examples

See `./examples/` directory for complete workflow examples:
- `example_extract_report.sh`: Extract text and tables from report
- `example_merge_quarterly.sh`: Merge quarterly PDFs
- `example_batch_process.sh`: Process multiple PDFs

## Key Principles

1. **Scripts are self-contained**: Each script handles one task completely
2. **Minimal parameters**: Use smart defaults, accept overrides
3. **Clear output**: Scripts print success/error messages with emojis
4. **Exit codes**: 0 for success, non-zero for errors
5. **Help text**: All scripts support `--help` flag

## Tips for Agent

- **Start simple**: Use minimal parameters first
- **Show progress**: For long operations, show that work is happening
- **Be helpful**: Suggest next logical steps after each operation
- **Learn preferences**: If user always wants CSV, remember that
- **Handle errors gracefully**: Don't just show stack traces, explain the problem

## Skill Maintenance

This skill follows the Agent Skills standard:
- **name** and **description** in frontmatter enable discovery
- **SKILL.md** provides full instructions for activation
- **scripts/** contain executable code for execution
- **Progressive disclosure** reduces cognitive load

Version: 1.0.0
Last updated: 2025-02-02

Files in this skill

  • README.md1006 B
  • skill.md9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.