PowerPoint (.pptx) Guide
This guide covers creating, editing, and analyzing PowerPoint presentations. For HTML-to-PPTX conversion, see html2pptx.md. For OOXML technical details, see ooxml.md.
Workflows Overview
| Task | Approach | Reference |
|---|---|---|
| Read/analyze slides | Markdown conversion or raw XML | This file |
| Create from HTML | html2pptx library | html2pptx.md |
| Create from template | Python scripts | This file |
| Edit existing PPTX | Unpack/modify/repack | ooxml.md |
Important: .pptx files are ZIP archives containing XML and resources.
Reading & Analysis
Convert to Markdown
# Using markitdown markitdown presentation.pptx > slides.md
Access Raw XML
# Unpack python ooxml/scripts/unpack.py presentation.pptx unpacked/ # View slide content cat unpacked/ppt/slides/slide1.xml # View speaker notes cat unpacked/ppt/notesSlides/notesSlide1.xml
Create Thumbnail Grid
python scripts/thumbnail.py presentation.pptx thumbnails/
Creates a visual grid showing all slides for quick analysis.
Creating New Presentations
Using html2pptx (Recommended)
- •Create HTML slides with proper dimensions
- •Convert using html2pptx library
- •Add charts/data programmatically
See html2pptx.md for complete guide.
Using Template
# 1. Analyze template python scripts/inventory.py template.pptx > inventory.json # 2. Create replacements JSON # Map placeholder text to new content # 3. Apply replacements python scripts/replace.py template.pptx replacements.json output.pptx
Design Principles
Required
- •State design approach before writing code
- •Use web-safe fonts only: Arial, Helvetica, Times New Roman, Georgia, Courier New, Verdana, Tahoma, Trebuchet MS
- •Ensure text contrast ratio ≥ 4.5:1 for readability
- •Validate output immediately after creation
Recommended
- •Content-informed design (colors/style match topic)
- •Consistent visual hierarchy across slides
- •Maximum 6 bullet points per slide
- •Meaningful use of whitespace
Example Color Palettes
Choose palette based on content:
| Style | Background | Primary | Secondary | Accent |
|---|---|---|---|---|
| Corporate | FFFFFF | 2C3E50 | 34495E | 3498DB |
| Creative | F5F5F5 | E74C3C | F39C12 | 9B59B6 |
| Tech | 1A1A2E | 16213E | 0F3460 | E94560 |
| Nature | F0F4F0 | 27AE60 | 2ECC71 | 16A085 |
| Elegant | FAF9F5 | 141413 | B0AEA5 | D97757 |
Supporting Scripts
thumbnail.py
Creates thumbnail grids for visual analysis.
python scripts/thumbnail.py input.pptx output_dir/ [--columns 5]
inventory.py
Extracts all text shapes with properties.
python scripts/inventory.py input.pptx > inventory.json
Output includes:
- •Slide number and shape ID
- •Text content and formatting
- •Position (x, y) and dimensions
- •Overflow detection
replace.py
Applies text replacements from JSON.
python scripts/replace.py input.pptx replacements.json output.pptx
Replacements format:
{
"slide_1": {
"shape_2": "New title text",
"shape_5": "Updated bullet points"
}
}
rearrange.py
Duplicates, reorders, or deletes slides.
python scripts/rearrange.py input.pptx operations.json output.pptx
Operations format (0-indexed):
{
"operations": [
{"action": "duplicate", "source": 0, "count": 2},
{"action": "delete", "index": 5},
{"action": "move", "from": 3, "to": 1}
]
}
validate.py
Validates PPTX structure and content.
python ooxml/scripts/validate.py output.pptx
Checks:
- •XML well-formedness
- •Required files present
- •Relationship integrity
- •Content overflow
Editing Existing Presentations
Workflow
- •Unpack:
python ooxml/scripts/unpack.py input.pptx unpacked/ - •Modify: Edit XML files directly
- •Validate:
python ooxml/scripts/validate.py unpacked/ - •Repack:
python ooxml/scripts/pack.py unpacked/ output.pptx
Common Modifications
- •Text changes: Edit
<a:t>elements in slide XML - •Add images: Add to
ppt/media/, update relationships - •Reorder slides: Modify
presentation.xml<p:sldIdLst>
See ooxml.md for detailed XML patterns.
Dependencies
# Python pip install markitdown python-pptx Pillow defusedxml # JavaScript (for html2pptx) npm install pptxgenjs playwright sharp # System tools (for thumbnails) brew install libreoffice poppler # macOS apt-get install libreoffice poppler-utils # Ubuntu
Best Practices
- •Always validate output immediately after creation
- •Use web-safe fonts to ensure cross-platform compatibility
- •Check overflow - text that doesn't fit won't render
- •Batch similar operations for efficiency
- •Keep unused resources out of final file (fonts, media)
- •Test on target platform - PowerPoint vs Keynote vs Google Slides