The PowerPoint Document stream is a sequence of records, and records nest inside records. There are two kinds: an atom holds data, and a container holds more records. Office Art drawing records, specified in [MS-ODRAW], have the same header and sit inside the same tree.
The record header
0recVer the low 4 bits of a 16-bit value: 0xF marks a container4 bits0recInstance the high 12 bits: meaning depends on the record12 bits2recType the record type2 bytes4recLen the size of the body in bytes, not counting this header4 bytes
A record’s body is the recLen bytes after its header. To find the next
record, a reader skips recLen bytes. A container’s body is a run of records
that together fill it. A record of an unknown type is skipped the same way.
Top-level records
The stream is a sequence of top-level records: the DocumentContainer, slides, masters, notes, handouts, embedded objects and VBA projects, and for each edit a PersistDirectoryAtom and a UserEditAtom. Because an edit can be appended to the stream without replacing what came before it, some top-level records may be out of date. The persist directory says which are current.
Record types
The types in [MS-PPT]. Names here are those of the specification, without their
RT_ prefix. A type below 0xF000 is PowerPoint’s; the Office Art records
start at 0xF000. The time and animation records use 0xF125 to 0xF145.
| Value | Name | Value | Name |
|---|---|---|---|
| 0x03E8 | Document | 0x0F9E | OutlineTextRefAtom |
| 0x03E9 | DocumentAtom | 0x0F9F | TextHeaderAtom |
| 0x03EA | EndDocumentAtom | 0x0FA0 | TextCharsAtom |
| 0x03EE | Slide | 0x0FA1 | StyleTextPropAtom |
| 0x03EF | SlideAtom | 0x0FA2 | MasterTextPropAtom |
| 0x03F0 | Notes | 0x0FA3 | TextMasterStyleAtom |
| 0x03F1 | NotesAtom | 0x0FA4 | TextCharFormatExceptionAtom |
| 0x03F2 | Environment | 0x0FA5 | TextParagraphFormatExceptionAtom |
| 0x03F3 | SlidePersistAtom | 0x0FA6 | TextRulerAtom |
| 0x03F8 | MainMaster | 0x0FA7 | TextBookmarkAtom |
| 0x03F9 | SlideShowSlideInfoAtom | 0x0FA8 | TextBytesAtom |
| 0x03FA | SlideViewInfo | 0x0FA9 | TextSpecialInfoDefaultAtom |
| 0x03FB | GuideAtom | 0x0FAA | TextSpecialInfoAtom |
| 0x03FD | ViewInfoAtom | 0x0FAB | DefaultRulerAtom |
| 0x03FE | SlideViewInfoAtom | 0x0FB7 | FontEntityAtom |
| 0x03FF | VbaInfo | 0x0FB8 | FontEmbedDataBlob |
| 0x0400 | VbaInfoAtom | 0x0FBA | CString |
| 0x0401 | SlideShowDocInfoAtom | 0x0FC1 | MetaFile |
| 0x0402 | Summary | 0x0FC3 | ExternalOleObjectAtom |
| 0x0406 | DocRoutingSlipAtom | 0x0FC8 | Kinsoku |
| 0x0407 | OutlineViewInfo | 0x0FC9 | Handout |
| 0x0408 | SorterViewInfo | 0x0FCC | ExternalOleEmbed |
| 0x0409 | ExternalObjectList | 0x0FCD | ExternalOleEmbedAtom |
| 0x040A | ExternalObjectListAtom | 0x0FCE | ExternalOleLink |
| 0x040B | DrawingGroup | 0x0FD0 | BookmarkEntityAtom |
| 0x040C | Drawing | 0x0FD1 | ExternalOleLinkAtom |
| 0x0410 | NamedShows | 0x0FD3 | ExternalHyperlinkAtom |
| 0x0411 | NamedShow | 0x0FD7 | ExternalHyperlink |
| 0x0412 | NamedShowSlidesAtom | 0x0FD8 | SlideNumberMetaCharAtom |
| 0x07D0 | List | 0x0FD9 | HeadersFooters |
| 0x07D5 | FontCollection | 0x0FDA | HeadersFootersAtom |
| 0x07E3 | BookmarkCollection | 0x0FDF | TextInteractiveInfoAtom |
| 0x07E4 | SoundCollection | 0x0FEE | ExternalOleControl |
| 0x07E6 | Sound | 0x0FF0 | SlideListWithText |
| 0x07E7 | SoundDataBlob | 0x0FF1 | AnimationInfoAtom |
| 0x07F0 | ColorSchemeAtom | 0x0FF2 | InteractiveInfo |
| 0x0BC1 | ExternalObjectRefAtom | 0x0FF3 | InteractiveInfoAtom |
| 0x0BC3 | PlaceholderAtom | 0x0FF5 | UserEditAtom |
| 0x0BDB | ShapeAtom | 0x0FF6 | CurrentUserAtom |
| 0x0BDC | ShapeFlags10Atom | 0x0FF7 | DateTimeMetaCharAtom |
| 0x1004 | ExternalMediaAtom | 0x0FF8 | GenericDateMetaCharAtom |
| 0x1005 | ExternalVideo | 0x0FF9 | HeaderMetaCharAtom |
| 0x100F | ExternalWavAudioEmbedded | 0x0FFA | FooterMetaCharAtom |
| 0x1011 | ExternalOleObjectStg | 0x1388 | ProgTags |
| 0x1014 | AnimationInfo | 0x1389 | ProgStringTag |
| 0x1018 | ExternalHyperlinkFlagsAtom | 0x138A | ProgBinaryTag |
| 0x1770 | PrintOptionsAtom | 0x138B | BinaryTagDataBlob |
| 0x1772 | PersistDirectoryAtom | 0x2EE0 | Comment10 |
| 0x2F14 | CryptSession10Container | 0x2EE1 | Comment10Atom |
| 0xF000 | OfficeArtDggContainer | 0xF00B | OfficeArtFOPT |
| 0xF001 | OfficeArtBStoreContainer | 0xF00D | OfficeArtClientTextbox |
| 0xF002 | OfficeArtDgContainer | 0xF010 | OfficeArtClientAnchor |
| 0xF003 | OfficeArtSpgrContainer | 0xF011 | OfficeArtClientData |
| 0xF004 | OfficeArtSpContainer | 0xF007 | OfficeArtFBSE |
| 0xF008 | OfficeArtFDG | 0xF01A–0xF02A | Picture blips |
| 0xF009 | OfficeArtFSPGR | 0xF125–0xF145 | Time and animation records |
| 0xF00A | OfficeArtFSP |
Reference
- [MS-PPT] RecordType – the full list of record types, with the structure each one holds