Skip to main content
OfficeIMO Docs Search documentation/

PowerPoint Capability Matrix

Edit on GitHub

Tested authoring, editing, preservation, rendering, and reporting boundaries for OfficeIMO.PowerPoint. Includes examples and API links.

OfficeIMO.PowerPoint is strongest when the output must stay editable and the workflow can use tested Open XML features. The table below separates native authoring from preservation and preview support so a successful save is not confused with full edit fidelity.

CapabilityAuthor or editPreserve on unrelated editsPNG/SVG and PDF proofNotes
Slides, ordering, sections, size, metadataYesYesYesIncludes duplicate and cross-deck slide import workflows.
Text boxes, rich runs, bullets, links, notesYesYesYesInspectPreflight() measures bounds and reports clipped or unreadably reduced text.
Auto shapes, lines, connectors, groups, custom paths and polygonsYesYesYes, within reported renderer limitsShared OfficeShape paths and polygons write editable DrawingML custom geometry. Effects may still be approximated in fixed-layout exports.
Pictures and SVG assetsYesYesYesCrop and transforms are supported; broken image relationships are preflight errors.
Native tablesYesYesYesAddTableSlides(...) creates deterministic continuation pages and repeats headers.
Semantic story familiesYesYesYesExecutive, chart, comparison, screenshot, appendix, architecture, and closing stories each have two editable compositions.
Deck rhythm inspectionYes, before renderingNot applicableNot applicableReports repeated kinds/variants, dense streaks, long sections, weak openings, and missing closings with stable codes.
All 17 shared chart kindsYesYesYesClustered/stacked/100% column and bar, line and area variants, scatter, bubble, radar, pie, and doughnut use OfficeChartKind. Bubble charts preserve X, Y, and size values in native chart XML and the embedded workbook.
Categorical combo charts and secondary value axesYesYesYesPer-series RenderKind and OfficeChartAxisGroup stay in native chart XML with cached values and embedded workbook data.
Chart accessibility and data summaryYesYesYesNative alt text can include a deterministic data summary; SaveDataSummary(...) writes a UTF-8 sidecar.
Other chart XML already present in a deckLimited edit surfaceYesSnapshot/export support variesInspect and test the concrete family before promising mutation parity.
Themes, masters, layouts, placeholdersInspect, select, copy from .pptx/.potx, and map by semantic nameYesInherited content is included where supportedTemplate inventory includes brand tokens, footer content, assets, and safe areas.
TransitionsYesYesStatic proof onlyPreview exports show the slide state, not animated playback.
Semantic SmartArtYes: process, hierarchy, cycle, list, matrix, pyramid, relationshipYesYesNode text stays editable; other imported SmartArt layouts remain preservation/reporting scenarios.
Classic and modern commentsYesYesMetadata proofClassic comments cover PPTX and supported PPT round trips. Modern Open XML comments support replies, status, reassignment, and removal.
Shape, text, and chart animationsYes for supported effectsBroader timelines are preserved and reportedStatic proof onlyImage and PDF exports prove the static slide state, not playback timing.
Custom showsYesYesStructural proofSlide membership, order, rename, and removal use the presentation API.
Audio, video, embedded and linked contentOLE storage has a typed add/replace surface; other media mutation variesYesReported or represented by a fallbackDo not treat a preview as playback proof.
VBA projectsAdd, replace, extract, and remove opaque projectsYes in matching macro-enabled formatsStructural proof onlyOfficeIMO validates bounded compound storage but does not generate or interpret VBA source.
Custom XML and ActiveXNo general authoring contractPreserve/report where possibleNot a fidelity promiseUse InspectFeatures() before edit-heavy round trips.
Digital signaturesInspect/report onlySave policy appliesNot applicableEditing a signed package can invalidate its signature.

Generation checks

PowerPointDeckPreflightReport report = presentation.InspectPreflight();
report.SaveJson("deck.preflight.json");

var options = new PowerPointDeckPreflightOptions {
    FailureSeverity = PowerPointDeckPreflightSeverity.Error
};
PowerPointDeckPreflightReport gate = presentation.InspectPreflight(options);
gate.ThrowIfFindings(options.FailureSeverity);
presentation.Save();

The preflight report is the same contract returned by designer generation and OfficeIMO.Markup.PowerPoint. Stable finding codes are intended for CI policy; human messages are supporting context.

For imported presentations, combine layout preflight with InspectFeatures() so the pipeline sees both generated-content risks and package features outside the editable surface.

PowerPoint 97-2003 capability contract

Binary .ppt, .pot, and .pps support has four independently reported directions: import into the editable model, new binary authoring, binary round-trip, and PPTX-to-binary conversion. Query the versioned catalog instead of inferring support from a successful open:

using OfficeIMO.PowerPoint.LegacyPpt.Capabilities;

LegacyPptCapability capability = LegacyPptCapabilityCatalog.Get(
    LegacyPptFeature.RasterPictures);
string json = LegacyPptCapabilityCatalog.ToJson();

Each direction is Native, Preserved, Converted, or Blocked. There are no provisional catalog rows. Saving blocks known loss by default. Imported files preserve unrelated compound-file records and streams; tables, charts, and SmartArt can convert to static PNG visuals only with explicit loss acceptance; features without a safe mapping remain blocked.