home / skills / 404kidwiz / claude-supercode-skills / pdf-skill

pdf-skill skill

/pdf-skill

This skill helps you generate, parse, and manipulate PDFs programmatically using popular tools to create, extract, merge, and fill forms efficiently.

npx playbooks add skill 404kidwiz/claude-supercode-skills --skill pdf-skill

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
3.1 KB
---
name: pdf-skill
description: Expert in generating, parsing, and manipulating PDF documents using tools like PDFKit, PDF.js, and Puppeteer. Use when creating PDFs, extracting content, merging documents, or filling forms. Triggers include "PDF", "generate PDF", "parse PDF", "extract PDF", "merge PDF", "PDF form", "PDFKit".
---

# PDF Skill

## Purpose
Provides expertise in programmatic PDF generation, parsing, and manipulation. Specializes in creating PDFs from scratch, extracting content, merging/splitting documents, and handling forms using PDFKit, PDF.js, Puppeteer, and similar tools.

## When to Use
- Generating PDFs programmatically
- Extracting text or data from PDFs
- Merging or splitting PDF documents
- Filling PDF forms programmatically
- Converting HTML to PDF
- Adding watermarks or annotations
- Parsing PDF structure and metadata
- Building PDF report generators

## Quick Start
**Invoke this skill when:**
- Generating PDFs from code or data
- Extracting content from PDF files
- Merging, splitting, or manipulating PDFs
- Filling or creating PDF forms
- Converting HTML/web pages to PDF

**Do NOT invoke when:**
- Word document creation → use `/docx-skill`
- Excel/spreadsheet work → use `/xlsx-skill`
- PowerPoint creation → use `/pptx-skill`
- General file operations → use Bash or file tools

## Decision Framework
```
PDF Operation?
├── Generate from scratch
│   ├── Simple → PDFKit (Node) / ReportLab (Python)
│   └── Complex layouts → Puppeteer/Playwright + HTML
├── Parse/Extract
│   ├── Text extraction → pdf-parse / PyPDF2
│   └── Table extraction → Camelot / Tabula
├── Manipulate
│   └── pdf-lib (merge, split, edit)
└── Forms
    └── pdf-lib (fill) / PDFtk (advanced)
```

## Core Workflows

### 1. PDF Generation with PDFKit
1. Install PDFKit (`npm install pdfkit`)
2. Create new PDDocument
3. Add content (text, images, graphics)
4. Style with fonts and colors
5. Add pages as needed
6. Pipe to file or response

### 2. HTML to PDF Conversion
1. Set up Puppeteer/Playwright
2. Navigate to HTML content or URL
3. Configure page size and margins
4. Set print options (headers, footers)
5. Generate PDF buffer
6. Save or stream result

### 3. PDF Parsing and Extraction
1. Choose parser (pdf-parse, PyPDF2, pdfplumber)
2. Load PDF file
3. Extract text or structured data
4. Handle multi-page documents
5. Clean and normalize extracted text
6. Output in desired format

## Best Practices
- Use vector graphics over raster when possible
- Embed fonts for consistent rendering
- Test PDF output across different readers
- Handle large PDFs with streaming
- Use appropriate library for task complexity
- Consider accessibility (tagged PDFs)

## Anti-Patterns
| Anti-Pattern | Problem | Correct Approach |
|--------------|---------|------------------|
| Image-only PDFs | Not searchable/accessible | Use text with fonts |
| No font embedding | Rendering issues | Embed required fonts |
| Memory loading large PDFs | Crashes | Stream processing |
| Ignoring encryption | Security/access issues | Handle encrypted PDFs |
| Wrong tool for job | Over-engineering | Match tool to complexity |

Overview

This skill provides expert, programmatic PDF generation, parsing, and manipulation using tools like PDFKit, PDF.js, Puppeteer, and Python libraries. It covers creating PDFs from data or HTML, extracting and normalizing content, merging/splitting documents, and filling forms reliably. Use it to automate PDF workflows, convert web pages to print-ready files, and build accessible report pipelines.

How this skill works

The skill selects the right library for the task: lightweight PDFKit/ReportLab for simple generation, Puppeteer/Playwright for complex HTML-to-PDF rendering, and pdf-parse/PyPDF2/pdfplumber for extraction. It supports streaming large files, embedding fonts, applying watermarks, merging or splitting with pdf-lib or similar, and programmatic form filling with pdf-lib or PDFtk. Outputs can be written to disk, returned as buffers/streams, or streamed to HTTP responses.

When to use it

  • Generate PDF invoices, reports, or labels programmatically from templates or data.
  • Convert dynamic HTML pages or dashboards to print-ready PDFs with Puppeteer/Playwright.
  • Extract text, tables, or metadata from uploaded PDF files for processing or indexing.
  • Merge, split, reorder, or add watermarks to existing PDF documents.
  • Automatically fill, flatten, or validate PDF forms in a server workflow.
  • Process large PDFs with streaming to avoid memory exhaustion.

Best practices

  • Choose the simplest tool that meets requirements: PDFKit/ReportLab for simple layouts, Puppeteer for complex HTML/CSS rendering.
  • Embed necessary fonts and prefer vector graphics for consistent, high-quality output.
  • Stream large files instead of loading entire PDFs into memory to prevent crashes.
  • Test generated PDFs across multiple viewers and platforms; verify accessibility tags when required.
  • Normalize and clean extracted text (remove headers/footers, merge hyphenations) before downstream use.

Example use cases

  • Generate monthly PDF reports from database records and email them as attachments.
  • Convert invoice HTML templates to PDFs with exact print styling via Puppeteer.
  • Extract tables from financial PDFs using pdfplumber or Camelot for downstream analysis.
  • Combine multiple signed documents into a single PDF and apply a watermark before archiving.
  • Auto-fill application forms received as PDFs, then flatten and return the filled document.

FAQ

Which tool should I use to render complex HTML/CSS to PDF?

Use Puppeteer or Playwright for pixel-perfect HTML/CSS rendering and precise control over print options.

How do I avoid memory issues with large PDFs?

Process PDFs in a streaming fashion, operate on page ranges, or use libraries that support incremental reading rather than loading the whole file.