How the PPT to Images Converter Works
AnyTool PPT to Images renders a PowerPoint deck entirely in the browser. A .pptx is an Open XML (OOXML) zip, so JSZip — bundled into the app and served from the same origin, never a CDN — unzips it locally. The engine reads ppt/presentation.xml for the slide size in EMU (cx/cy ÷ 914400 = inches, then ×96 = CSS pixels, scaled 1×–3×) and the slide order from <p:sldIdLst>, resolved to slide parts through ppt/_rels/presentation.xml.rels. For each slide it parses slideN.xml with DOMParser and walks <p:cSld>/<p:spTree> in document (z) order: the background comes from the slide’s <p:bg> solid fill, falling back to the slide layout, then the slide master, then white or a user override; each <p:sp> shape reads its position and size from <p:spPr>/<a:xfrm> (a:off x/y and a:ext cx/cy in EMU), draws a solid fill if present, then lays out its <p:txBody> — paragraphs (<a:p>), runs (<a:r>/<a:t>) with run properties (sz in hundredths of a point, b/i, solidFill/srgbClr colour) and paragraph alignment (<a:pPr> algn) — word-wrapped inside the shape via canvas text measurement; and each <p:pic> resolves <a:blip> r:embed through the slide’s rels to ppt/media/* and draws the JPEG/PNG/GIF/BMP/WebP scaled into its xfrm rectangle. The canvas is exported with toBlob as PNG or JPEG; one slide downloads as a single image and many slides are zipped with JSZip in the browser.
- Slide size + order read from ppt/presentation.xml (EMU → pixels, 1×–3×)
- JSZip bundled locally — no CDN, no upload, works offline
- Shape tree walked in z-order: background, shape fills, text and pictures
- Text keeps size, bold/italic, colour and alignment, word-wrapped per shape
- Pictures resolved via slide rels to ppt/media/* and placed by EMU position
