PDF/DOCX/XLSX/PPTX generation and parsing on Cloudflare Workers. Covers CF Browser Rendering → PDF, pdf-lib Worker-native generation, docx/exceljs output, pptxgenjs slides, and RAG-ready text extraction. Use cases: donor annual reports, SaaS invoices, tax receipts, financial reports, grant applications. Source: anthropics/skills pdf/docx/pptx/xlsx patterns.
Scanned 8/31/2026
Install via CLI
openskills install heymegabyte/claude-skills---
name: "document-processing"
description: "PDF/DOCX/XLSX/PPTX generation and parsing on Cloudflare Workers. Covers CF Browser Rendering → PDF, pdf-lib Worker-native generation, docx/exceljs output, pptxgenjs slides, and RAG-ready text extraction. Use cases: donor annual reports, SaaS invoices, tax receipts, financial reports, grant applications. Source: anthropics/skills pdf/docx/pptx/xlsx patterns."
when_to_use: "Any request involving document output (invoice, report, receipt, export) or document input (parse a PDF, extract tables, RAG ingestion from uploaded docs)."
effort: "high"
model: "inherit"
priority: 5
pack: "documents"
stage: stable
triggers:
- "PDF"
- "invoice"
- "receipt"
- "annual report"
- "DOCX"
- "XLSX"
- "spreadsheet"
- "PPTX"
- "slide deck"
- "parse document"
- "extract text"
- "RAG ingestion"
paths:
- "src/worker/**"
- "apps/**"
- "workers/**"
---
# 18 — Document Processing
Worker-native document I/O. All generation runs at the edge — no Lambda, no container, no third-party conversion SaaS.
## Sub-modules
- `pdf-generation.md` — CF Browser Rendering → PDF + pdf-lib fallback
- `pdf-parsing.md` — text + table extraction for RAG ingestion
- `docx-xlsx.md` — DOCX (docx library) + XLSX (exceljs) generation in Workers
- `pptx-generation.md` — PPTX via pptxgenjs in Workers
## Decision tree
```
Need document output?
├── PDF (invoice / receipt / report)
│ ├── Complex layout (HTML → PDF) → CF Browser Rendering
│ └── Programmatic (no layout) → pdf-lib in Worker
├── DOCX / XLSX (data export / mail merge)
│ ├── DOCX → docx library (pure JS, Worker-compat)
│ └── XLSX → exceljs (no canvas dep, Worker-compat)
└── PPTX (slide deck / pitch deck)
└── pptxgenjs (Worker-compat, no native deps)
Need document input (RAG)?
├── PDF text → pdf-parse (pure JS) or Workers AI document extraction
└── Tables → structured JSON → D1 or Vectorize
```
## Cloudflare primitives used
- `CF Browser Rendering` — puppeteer-compatible Workers binding for HTML → PDF
- `R2` — store and serve generated documents
- `D1` — job state + document metadata
- `Workers AI` — optional OCR for scanned PDFs (Llama Vision)
- `Queues` — async generation jobs (large reports)
## Use case map
| Use case | Format | Method |
|---|---|---|
| SaaS invoice | PDF | pdf-lib → R2 |
| Tax receipt (nonprofit) | PDF | CF Browser Rendering → R2 |
| Donor annual report | PDF | CF Browser Rendering (full layout) |
| Financial export | XLSX | exceljs → R2 |
| Grant application | DOCX | docx → R2 |
| Board slide deck | PPTX | pptxgenjs → R2 |
| RAG: donor docs | Text | pdf-parse → Vectorize |
## Cross-links
- `rules/cloudflare-lock-in-is-leverage.md` — CF Browser Rendering over puppeteer SaaS
- `rules/feature-flags.md` — gate new doc types behind flag before GA
- `13-observability-and-growth/` — track document generation events in PostHog
- `08-deploy-and-runtime-verification/` — smoke-test R2 presigned URL after deploy
No comments yet. Be the first to comment!