document-processing
eyadsibai/ltk
Process PDF, Excel, Word, and PowerPoint documents—extract, merge, convert, and manipulate office files.
What is document-processing?
A guide for working with common office document formats (PDF, Excel, Word, PowerPoint). Use this when you need to extract text, merge files, convert between formats, or manipulate spreadsheets, presentations, and documents programmatically.
- Extract text and tables from PDFs using pdfplumber or pypdf
- Merge, split, rotate, and encrypt PDF files
- Create and edit Excel spreadsheets with formulas and formatting using openpyxl or pandas
- Generate and modify Word documents with python-docx, including tracked changes for contracts
- Build and edit PowerPoint presentations with python-pptx or pptxgenjs
- Convert between formats (DOCX to Markdown, any format to PDF via LibreOffice)
How to install document-processing
npx skills add null --skill document-processing- Python 3.7+ or Node.js for JavaScript tools
- For PDF OCR: pytesseract and pdf2image (requires Tesseract binary)
- For format conversion: LibreOffice installed for headless conversion
- For CLI tools: pandoc, qpdf, or pdftotext available in PATH
How to use document-processing
- 1.Identify the document format and operation needed (extract, merge, create, convert)
- 2.Choose the appropriate tool from the guide (e.g., pdfplumber for PDF tables, openpyxl for Excel formulas)
- 3.For Excel: write formulas instead of static values so calculations update dynamically
- 4.For Word: use tracked changes XML for contracts and legal documents to maintain audit trails
- 5.For PowerPoint: follow design principles (web-safe fonts, two-column layout, consistent patterns)
- 6.Test the output file opens correctly before deploying to production
Use cases
- Automating report generation by merging multiple PDFs or creating Excel financial models
- Extracting structured data from Word contracts or PDF forms into a database
- Converting presentation slides to markdown for content analysis or republishing
- Applying OCR to scanned PDFs and extracting tables into DataFrames
- Generating dynamic Excel spreadsheets with formulas that recalculate when data changes
- Data analysts and engineers processing bulk documents
- Business automation developers building document workflows
- Financial modelers creating dynamic Excel workbooks
- Legal/compliance teams managing contracts with tracked changes
- Report generators automating PDF or presentation creation
document-processing FAQ
Always use Excel formulas. Writing static calculated values breaks when source data changes; formulas recalculate automatically.
Use pdfplumber, which can detect and convert tables to DataFrames. For scanned PDFs, first apply OCR with pytesseract and pdf2image.
All three are ZIP archives containing XML files. You can unzip them to access raw content directly if needed, but libraries like openpyxl and python-docx handle this for you.
For professional/legal documents, edit the tracked changes XML directly (word/comments.xml and w:del/w:ins tags) rather than replacing text, to maintain the audit trail.
Yes, use LibreOffice in headless mode for reliable conversion from DOCX, PPTX, and other formats to PDF.
Full instructions (SKILL.md)
Source of truth, from eyadsibai/ltk.
name: document-processing description: Use when working with "PDF", "Excel", "Word", "PowerPoint", "XLSX", "DOCX", "PPTX", "spreadsheets", "presentations", "extract text", "merge documents", "convert documents", or asking about "office document manipulation" version: 1.0.0
Document Processing Guide
Work with office documents: PDF, Excel, Word, and PowerPoint.
Format Overview
| Format | Extension | Structure | Best For |
|---|---|---|---|
| Binary/text | Reports, forms, archives | ||
| Excel | .xlsx | XML in ZIP | Data, calculations, models |
| Word | .docx | XML in ZIP | Text documents, contracts |
| PowerPoint | .pptx | XML in ZIP | Presentations, slides |
Key concept: XLSX, DOCX, and PPTX are all ZIP archives containing XML files. You can unzip them to access raw content.
PDF Processing
PDF Tools
| Task | Best Tool |
|---|---|
| Basic read/write | pypdf |
| Text extraction | pdfplumber |
| Table extraction | pdfplumber |
| Create PDFs | reportlab |
| OCR scanned PDFs | pytesseract + pdf2image |
| Command line | qpdf, pdftotext |
Common Operations
| Operation | Approach |
|---|---|
| Merge | Loop through files, add pages to writer |
| Split | Create new writer per page |
| Extract tables | Use pdfplumber, convert to DataFrame |
| Rotate | Call .rotate(degrees) on page |
| Encrypt | Use writer's .encrypt() method |
| OCR | Convert to images, run pytesseract |
Excel Processing
Excel Tools
| Task | Best Tool |
|---|---|
| Data analysis | pandas |
| Formulas & formatting | openpyxl |
| Simple CSV | pandas |
| Financial models | openpyxl |
Critical Rule: Use Formulas
| Approach | Result |
|---|---|
| Wrong: Calculate in Python, write value | Static number, breaks when data changes |
| Right: Write Excel formula | Dynamic, recalculates automatically |
Financial Model Standards
| Convention | Meaning |
|---|---|
| Blue text | Hardcoded inputs |
| Black text | Formulas |
| Green text | Links to other sheets |
| Yellow fill | Needs attention |
Common Formula Errors
| Error | Cause |
|---|---|
| #REF! | Invalid cell reference |
| #DIV/0! | Division by zero |
| #VALUE! | Wrong data type |
| #NAME? | Unknown function name |
Word Processing
Word Tools
| Task | Best Tool |
|---|---|
| Text extraction | pandoc |
| Create new | python-docx or docx-js |
| Simple edits | python-docx |
| Tracked changes | Direct XML editing |
Document Structure
| File | Contains |
|---|---|
word/document.xml | Main content |
word/comments.xml | Comments |
word/media/ | Images |
Tracked Changes (Redlining)
| Element | XML Tag |
|---|---|
| Deletion | <w:del><w:delText>...</w:delText></w:del> |
| Insertion | <w:ins><w:t>...</w:t></w:ins> |
Key concept: For professional/legal documents, use tracked changes XML rather than replacing text directly.
PowerPoint Processing
PowerPoint Tools
| Task | Best Tool |
|---|---|
| Text extraction | markitdown |
| Create new | pptxgenjs (JS) or python-pptx |
| Edit existing | Direct XML or python-pptx |
Slide Structure
| Path | Contains |
|---|---|
ppt/slides/slide{N}.xml | Slide content |
ppt/notesSlides/ | Speaker notes |
ppt/slideMasters/ | Master templates |
ppt/media/ | Images |
Design Principles
| Principle | Guideline |
|---|---|
| Fonts | Use web-safe: Arial, Helvetica, Georgia |
| Layout | Two-column preferred, avoid vertical stacking |
| Hierarchy | Size, weight, color for emphasis |
| Consistency | Repeat patterns across slides |
Converting Between Formats
| Conversion | Tool |
|---|---|
| Any → PDF | LibreOffice headless |
| PDF → Images | pdftoppm |
| DOCX → Markdown | pandoc |
| Any → Text | Appropriate extractor |
Best Practices
| Practice | Why |
|---|---|
| Use formulas in Excel | Dynamic calculations |
| Preserve formatting on edit | Don't lose styles |
| Test output opens correctly | Catch corruption early |
| Use tracked changes for contracts | Audit trail |
| Extract to markdown for analysis | Easier to process |
Common Packages
| Language | Packages |
|---|---|
| Python | pypdf, pdfplumber, openpyxl, python-docx, python-pptx |
| JavaScript | docx, pptxgenjs |
| CLI | pandoc, qpdf, pdftotext, libreoffice |
Related skills
More from eyadsibai/ltk and the wider catalog.

web-access
Browser automation and web scraping for agents—search, fetch, login, and interact with any website.

prompt-lookup
Search, retrieve, and improve AI prompts from prompts.chat library.

skill-lookup
Search, retrieve, and install AI agent skills from the prompts.chat registry.

ffmpeg-analyse-video
Extract and analyse video frames with ffmpeg, delegating vision tasks to sub-agents to preserve context.

feature-flags
Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React.

flags
Use when you need to check feature flag states, compare channels, or debug why a feature behaves differently across release channels.