Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

pptxboss reads, verifies and creates PowerPoint .pptx files, and reads legacy .ppt files through the same API. It is a clean-room implementation of ECMA-376 (Office Open XML) in safe Rust, with no compression or XML dependency. The same core is used by the command line, the Rust crates and the Python extension. The PowerPoint 97-2003 binary format is read from the MS-CFB, MS-PPT and MS-ODRAW specifications into the same slide model, so text, notes, titles and pictures are read from a .ppt the same way.

Leniency

Real decks are damaged. The reader tolerates bytes before the archive, a missing central directory, and broken content types and relationships, recovers the slide list from relationships when the presentation part does not list it, and skips what it cannot read instead of refusing. Every skip is reported: the CLI prints it to stderr as a warning: line, and text_reporting returns it with the text.

Two views of a package

Package is the raw Open Packaging Conventions view: every item, content type and relationship exactly as written, defects included. Document is the lenient reader built on it. The verifier reads both, which is how it can report the defects the reader works around.

Scope

Text extraction with paragraphs, line breaks, fields, tables, groups, charts and diagrams; Markdown output; speaker notes; comments, threaded comments included; sections; core and application properties; titles; pictures with their image parts; embedded objects; hyperlinks; alternative text; slide structure as a shape tree; a verifier with 72 clause-numbered rules; deck creation with titles, bullets, paragraphs, text boxes, tables, pictures and notes; Markdown to slides. Rendering slides to images is out of scope.

Where to go next

Installation covers the wheel, the binary and the crates; the Quickstart shows the CLI, Python and Rust doing real work. The guide then takes one task per chapter:

  • Extracting text: slide text, reading order, slide selection, warnings for what was skipped.
  • Notes, tables and structure: speaker notes, tables, the shape tree, titles and hyperlinks.
  • Extracting images: each slide's pictures and the bytes of their image parts, read only when asked for.
  • Verifying a deck: the clause-numbered rules, their codes and severities.
  • Creating decks: titles, bullets, text boxes, tables, pictures and notes from the CLI and Rust.
  • Markdown to slides: headings become slides, list items bullets and Notes: lines speaker notes.

The reference section holds the CLI reference, the Python API, the Rust crates, the verifier rules and the list of limitations.

pptxboss is dual-licensed under MIT or Apache-2.0, at your option.