Skip to main content

Presentation API

Use Office.show(iframe) for an iframe that opened a Presentation document. The module identifier is show; the product name is Presentation.

First complete the distribution, import map, and HTTP server setup in the Editor SDK quickstart. Open this document type in the office-frame iframe. Use the JavaScript blocks below in order in the same module script. Write examples change the document, so run them on a sample or copy.

Object model​

The root handle is Show.Document. Object types in the current catalog: Slide, Shape, Image, Line, Group, Chart, Table, TableCell, Comment, Diagram, OleObject, and Control.

Every handle method is a round trip to the editor and returns a Promise.

Slides and shapes​

import { Office, ShapePreset } from "@thinkfree.dev/tfo-sdk";

const iframe = document.querySelector("#office-frame");
const show = Office.show(iframe);
await show.whenReady();

const doc = show.getDocument();
const slides = await doc.getSlides();
if (!slides.length) throw new Error("Open a presentation with at least one slide.");
const shape = await slides[0].insertShape(ShapePreset.RECT, { x: 100, y: 100, width: 300, height: 120 });
await shape.insertText("Quarterly update");

const added = await doc.insertSlide();
await added.appendSlideNoteText("Speaker notes");

Shape presets and other shared constants (ShapePreset, LineDash, ShapeZOrder, Chart*) are flat exports. Presentation-specific constants live in the Show namespace (for example Show.ShapeType, Show.SlideLayoutType).

Narrow shape types​

findShapes() and getShapes() return a union of shape kinds. Use the synchronous type guards to narrow without a round trip:

for (const s of await slides[0].getShapes()) {
if (s.isImage()) console.log("image", await s.getSize());
else if (s.isTable()) console.log("table", await s.getRowCount());
else if (s.isShape()) console.log("shape", await s.getText());
}

Guards available on shape handles: isShape(), isImage(), isLine(), isGroup(), isChart(), isTable(), isDiagram(), isOleObject(), isControl().

Errors​

A failed operation rejects with SDKError; the editor's structured response is in error.data (error.data.error.code). See Document tools and error handling for the full error table.

API reference​

Every object type available on Presentation handles in the current SDK build has its own reference page, generated from the SDK type definitions: a method summary table, then each method's TypeScript signature, parameters, and return value. Every method returns a Promise. Pick an object type below or open it from the sidebar.

Object typeMethodsObtained from
Show.Document51app.getDocument()
Show.Slide60Document.duplicateSlide(), Document.duplicateSlides(), Document.findSlides(), …
Show.Shape117Document.findShapes(), Slide.duplicateShape(), Slide.duplicateShapes(), …
Show.Image69Slide.insertImage(), Slide.insertWebVideo()
Show.Line70-
Show.Group34Slide.groupShapes()
Show.Chart50Document.findCharts(), Slide.findCharts()
Show.Table53Document.findTables(), Slide.findTables(), Slide.insertTable()
Show.TableCell57Table.findCells(), Table.getCell(), Table.getCells(), …
Show.Comment14Document.findComments(), Slide.findComments(), Slide.getComments(), …
Show.Diagram35-
Show.OleObject35-
Show.Control35-

Constant members are listed on the Show.* page.