Export and Verify¶
REQUIRED: Verify After Visual Changes¶
You MUST export and look at the result after creating or repositioning any visual content — shapes, tables, charts, images, or significant text/formatting changes. Do not save and close a session without this step when the task involves visual output.
1. chart(action: "add-chart", ...) / table(action: "add-table", ...) / image(action: "add-picture", ...) / shape(action: "set-position", ...)
2. export(action: "export-slide-to-image", session_id: ..., slide_index: ..., output_path: ...) ← REQUIRED — never skip
3. Inspect the returned image for overlap, overflow, or wrong placement
4. If issues found → fix → export again → repeat until it looks right
5. presentation(action: "close", sessionId: ..., save: true)
This rule applies even if the operation reported success: true — a successful COM call only confirms the API accepted the parameters, not that the result looks correct.
Actions¶
| Tool | Action | Parameters | Notes |
|---|---|---|---|
export | export-to-pdf | session_id, output_path, overwrite (default false) | Creates a PDF without changing the open presentation's file path. Refuses to replace an existing file unless overwrite is explicitly true. |
export | export-slide-to-image | session_id, slide_index, output_path, format (default "PNG"), width, height (optional pixels) | Renders exactly one slide to a single image file. |
export | export-all-slides-to-images | session_id, output_directory, format (default "PNG") | Renders every slide; PowerPoint names files Slide1.PNG, Slide2.PNG, etc. in the given directory. |
formataccepts any PowerPoint export filter name:"PNG","JPG","GIF","BMP","TIF","WMF","EMF". Default to"PNG"unless the user needs a specific format.width/heightonexport-slide-to-imagecontrol output pixel dimensions; omit them to use PowerPoint's default rendering size.export-all-slides-to-imagescreatesoutput_directoryif it doesn't already exist.
When to Use Each¶
| Situation | Use |
|---|---|
| Delivering a finished deck as a PDF | export(action: "export-to-pdf", ...) after saving the presentation |
| Just added/changed one slide | export(action: "export-slide-to-image", ...) on that slide only |
| Finished building a whole deck | export(action: "export-all-slides-to-images", ...) once, review every image |
| Iterating on a single slide's layout | export-slide-to-image repeatedly on that slide during the fix loop |
Prefer the single-slide export while iterating on one slide — exporting the whole deck on every fix cycle wastes calls once you've localized the issue to one slide.
Common Issues to Look For¶
| Problem | Likely fix |
|---|---|
| Text visually cut off / overflowing its box | Shorten text, reduce font_size, or grow the shape with shape(action: "set-size", ...) |
| Two shapes overlapping | shape(action: "set-position", ...) on one of them, using the positioning reference in deck-builder.md |
| Chart illegible / too small | Increase width/height on the chart, or reduce category count |
| Table cell text overflowing | Shorten cell text or increase the table's height when creating it (tables can't be resized post-creation without re-adding — see tables.md) |
| Image stretched/squashed | Recompute width/height to match the source image's aspect ratio |
The Fix Loop¶
For each slide with visual content {
1. Build/modify the slide
2. export(action: "export-slide-to-image", ...) → inspect
3. If ANY issue found → fix it → export again
4. Move to the next slide only when it looks right
}
Expect 1-2 fix cycles per visually complex slide (charts, tables, multi-shape layouts) — this is normal, not a sign something went wrong the first time.
After the Full Deck¶
Before the final presentation(action: "close", sessionId: ..., save: true), run export(action: "export-all-slides-to-images", ...) once as a final pass over the whole deck, confirming no slide was missed and the deck reads coherently start to finish.