Generate PowerPoint
These actions provide ability to produce formatted Word files using templates and input payload.
Generate PowerPoint Actions
ExportPPTX
Produces a PowerPoint (.pptx) file from given input data. The document can be produced from an existing template (replacing text in named shapes or replacing ${...} tokens), by generating layout-driven slides against the available slide layouts, or from scratch as a single title/body slide built from text or Markdown. Event metadata fields applicable for this action are as follows:
Input Element
Json path for the input in request event payload
customer
-
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Generate PowerPoint ExportPPTX action eventMeta fields",
"type": "object",
"properties": {
"eventMeta": {
"type": "object",
"properties": {
"inputElement": {
"type": "string",
"definition": "Json path for the input in request event payload",
"example": "customer",
"default": null
}
}
}
}
}With event metadata parameters as:
Output Path
Path on the target file system to write the generated presentation to
output/deck.pptx
-
Template Path
Path on the target file system to read the template presentation from. If omitted, the deck is built from the input
templates/deck.pptx
-
Template Format
How the deck is produced: shapes replaces shape text matched by shape name; slides builds one slide per spec from the available layouts; any other value replaces ${field} tokens in slide text (or, with no template, builds a single title/body slide from text/md)
slides
tokens / text
Input Pattern
JMESPath pattern to apply on input element
{slides: slides}
-
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Generate PowerPoint ExportPPTX action eventMeta.parameters",
"type": "object",
"properties": {
"eventMeta": {
"type": "object",
"properties": {
"parameters": {
"type": "object",
"properties": {
"outputPath": {
"type": "string",
"definition": "Path on the target file system to write the generated presentation to",
"example": "output/deck.pptx",
"default": null
},
"templatePath": {
"type": "string",
"definition": "Path on the target file system to read the template presentation from; if omitted, the deck is built from the input",
"example": "templates/deck.pptx",
"default": null
},
"templateFormat": {
"type": "string",
"definition": "How the deck is produced: 'shapes' replaces shape text matched by shape name, 'slides' builds one slide per spec from the available layouts, any other value replaces ${field} tokens in slide text (or, with no template, builds a single title/body slide from text/md)",
"example": "slides",
"default": null
},
"inputPattern": {
"type": "string",
"definition": "JMESPath pattern to apply on input element",
"example": "{slides: slides}",
"default": null
}
}
}
}
}
}
}Content Format
The shape of the input payload depends on how the deck is produced. The mode is selected by whether a templatePath is given and by templateFormat.
Simple slide — no template, default format
With no templatePath (and templateFormat other than slides), a single title/body slide is generated. Provide a text or md field, plus an optional title. When md is present, its value is rendered as editable text (see the Markdown subset below); otherwise text is used verbatim, with newlines becoming separate paragraphs.
{
"title": "Quarterly Review",
"md": "# Highlights\n\n- Revenue up 12%\n- Two new markets\n\n**Strong** finish to the year."
}Shapes — templateFormat = shapes
Requires a templatePath. Each top-level input field maps to a shape whose name equals the field name; the shape's text is replaced with the field value. This is the analog of Word content controls, keyed on shape name instead of a tag. Grouped shapes are descended into, and only non-null fields are applied.
Tokens — default format with a template
The default when a templatePath is set (any templateFormat other than shapes or slides). Each top-level field defines a ${field} token that is replaced everywhere it appears in slide text. Replacement is done per paragraph, so a token split across multiple runs still matches. This is the analog of Word mail merge.
Slides — templateFormat = slides
Builds one slide per spec from the available slide layouts (from the template, or from the blank package when no templatePath is given). New slides are appended after any existing ones. The input is either an array of slide specs, or an object with a slides array field.
Each slide spec supports:
layout
Layout selector: a numeric index (0-based, into layouts sorted by part name), a part-name match, or the layout's display name (e.g. Title and Content). Falls back to the first layout
content
Object mapping keys to the layout's placeholders (see below). Newlines in a value become separate paragraphs
elements
Array of freely positioned text/image boxes, appended on top of the placeholder content (see below)
content keys are resolved to layout placeholders as follows: title → the title (or centre-title) placeholder; subtitle → the subtitle placeholder; text, body, or content → the first body placeholder. Any other key is treated as a direct placeholder-type name. The keys layout and image are ignored inside content.
elements is an array of freely positioned boxes. Each element requires a type and a position/size (x, y, w, h, with w and h greater than 0). Coordinates default to inches; set unit per element to in, pt, px, or emu.
type
all
text, md, or image (required)
x, y, w, h
all
Position and size (numeric, required; w/h > 0)
unit
all
in (default), pt, px, or emu
name
all
Shape name (optional)
text / md
text, md
Content; md enables the Markdown subset below
fontSize
text, md
Font size in points
bold, italic, underline
text, md
Boolean run styling
color
text, md
Font colour as #RRGGBB (or RRGGBB)
fontFamily
text, md
Font family name
align
text, md
left, center, right, or justify
valign
text, md
Vertical anchor: top, middle, or bottom
headingAlign, heading1FontSize … heading6FontSize, codeFontFamily
md
Markdown-only overrides for heading alignment, per-level heading sizes, and code font
src
image
Filesystem/Hadoop path, http(s):// URL (max 25 MB), or base64 data: URI
base64
image
Raw base64 image data (alternative to src)
alt
image
Alternative text / description
Markdown subset
When a md field is supplied (simple slide, or a text/md element with type: "md"), a deliberately bounded subset of Markdown is translated into editable DrawingML so it stays formatted in PowerPoint:
Block syntax: ATX headings (
#–######) and setext headings (===/---), ordered and unordered lists (with nesting by indentation), fenced code blocks (```), paragraphs, and blank lines.Inline syntax: bold (
**/__), italic (*/_), inline code (`), backslash escapes, and hard line breaks (two trailing spaces).
Last updated
