Skip to content

Interface: ObjectOptions ​

PositionProps for an object that can fill a layout placeholder: text, an image, a table or a chart. Each axis also takes null, which leaves it unstated, as omitting it does. With placeholder, an unstated axis comes from the layout placeholder; without one, it takes the object's default. null is how a computed value says "unset" where exactOptionalPropertyTypes refuses undefined.

Example ​

ts
{ placeholder: 'body', x: indent ?? null } // the placeholder's left edge unless indented

Extends ​

Properties ​

adjustHandles? ​

optional adjustHandles?: ShapeAdjustHandle[]

Adjust handles (<a:ahLst>) for a custGeom shape: draggable handles (XY or polar), optionally bound to guides via gdRef*.

Inherited from ​

ShapeProps.adjustHandles


align? ​

optional align?: HAlign

Horizontal alignment

Default ​

ts
'left'

Inherited from ​

ShapeProps.align


altText? ​

optional altText?: string

Alt Text value ("How would you describe this object and its contents to someone who is blind?")

  • PowerPoint: [right-click on an image] > "Edit Alt Text..."
  • omitted, the picture's descr is empty, as PowerPoint writes it; the source path or URL is never used

Inherited from ​

ImageBaseProps.altText


anchorCtr? ​

optional anchorCtr?: boolean

Centre the cell's whole text block horizontally within the cell (a:tcPr/@anchorCtr), independent of each paragraph's own align.

The two do different things and compose: align decides where each line sits inside the text block, anchorCtr decides where that block sits inside the cell. With left-aligned text in a wide cell, anchorCtr: true centres the ragged-right column of lines as a unit while keeping their left edges flush with each other.

false is the schema default, so it emits nothing, the same reasoning as horzOverflow: 'clip'.

Default ​

ts
false

Inherited from ​

TableCellProps.anchorCtr


angleRange? ​

optional angleRange?: [number, number]

Radius (only for ShapeType.pie, ShapeType.arc, ShapeType.blockArc)

  • In the case of ShapeType.blockArc you have to setup the arcThicknessRatio
  • values: [0-359, 0-359]

Default ​

ts
[270, 0]

Inherited from ​

ShapeProps.angleRange


arcThicknessRatio? ​

optional arcThicknessRatio?: number

Radius (only for ShapeType.blockArc)

  • You have to setup the angleRange values too
  • values: 0.0-1.0

Default ​

ts
0.5

Inherited from ​

ShapeProps.arcThicknessRatio


autoPageCharWeight? ​

optional autoPageCharWeight?: number

Auto-paging character weight

  • adjusts how many characters are used before lines wrap
  • range: -1.0 to 1.0

Default ​

ts
0.0

Example ​

ts
0.5 // lines are longer (increases the number of characters that can fit on a given line)

Inherited from ​

TableCellProps.autoPageCharWeight


baseline? ​

optional baseline?: number

Baseline shift, as TextPropsOptions.baseline takes it on a text run: above zero raises the text, below zero lowers it. On a cell it applies to every run that states none.

Inherited from ​

TableCellProps.baseline


biLevel? ​

optional biLevel?: object

Recolor the image to two-level black & white (<a:biLevel thresh="…"/>)

  • every pixel at/above the luminance threshold becomes white, everything below it black (MS-PPT > Format Picture > Picture Color > Recolor > Black and White …%)

threshold ​

threshold: number

Luminance split point as a 0.0–1.0 fraction (serialized to thresh, the 0–1 fraction ×100000).

Example ​

ts
{ threshold: 0.5 } // split at 50% luminance

Inherited from ​

ImageBaseProps.biLevel


bold? ​

optional bold?: boolean

Bold style

Default ​

ts
false

Inherited from ​

TableCellProps.bold


border? ​

optional border?: StrokeProps | [StrokeProps | null, StrokeProps | null, StrokeProps | null, StrokeProps | null]

The cell's four edge borders (a:tcPr/a:lnT|lnR|lnB|lnL).

  • a single BorderProps is broadcast to all four sides
  • an array is read in TRBL order ([top, right, bottom, left])

Overrides the table-level TableProps.border default entirely; the two do not merge per side. A null entry is a hole: that edge is left out of a:tcPr and keeps inheriting from the table style, while { type: 'none' } writes an explicit no-line that overrides it. For the two corner-to-corner rules see diagonal; for the table's outside edge see TableProps.outerBorder.

Inherited from ​

TableCellProps.border


breakLine? ​

optional breakLine?: boolean

Add a line-break

Default ​

ts
false

Inherited from ​

TableCellProps.breakLine


bullet? ​

optional bullet?: boolean | "inherit" | TextBulletProps

Add standard or custom bullet

  • use true for standard bullet
  • pass object options for custom bullet
  • false is the explicit off: it writes <a:buNone/> plus marL="0" indent="0", which overrides whatever bullet the layout's or master's list style sets for this level
  • 'inherit' states nothing at all (no bullet child and no margin attributes), so the list style keeps reaching the paragraph
  • omitting the option means 'inherit' on a placeholder definition (defineSlideMaster({ objects })), and on text filling a placeholder the layout defines, which takes the definition's bullet. Anywhere else it means false

The margins are only a default of the bullet state: paraMarginLeft and paraIndent state @marL/@indent independently in any of the three, including an inherited margin under a drawn bullet.

When a shape's text is an array of runs, state this on the opening run only. A run that draws a bullet starts a new paragraph by itself, so repeating it (the placement that align requires) turns one three-run paragraph into three one-run paragraphs. A paragraph takes its properties from its first run.

Default ​

false, or 'inherit' on a placeholder

Inherited from ​

TableCellProps.bullet


caps? ​

optional caps?: "small" | "all" | "none"

Text capitalization (a:rPr/@cap, ST_TextCapsType)

  • 'all' = ALL CAPS
  • 'small' = Small Caps
  • 'none' = the explicit off: it writes cap="none", which overrides a capitalization the run would otherwise inherit. Omitting the option states nothing and lets that inheritance stand
  • PowerPoint: Font > Effects > All Caps / Small Caps

Default ​

ts
(unset) inherit

Inherited from ​

TableCellProps.caps


cell3D? ​

optional cell3D?: TableCell3DProps

A 3-D bevel on the cell (a:tcPr/a:cell3D). Niche: PowerPoint's table UI has no control for it, so it reaches a deck from a theme or another producer, and this exists to author and reproduce one. See TableCell3DProps.

Inherited from ​

TableCellProps.cell3D


charSpacing? ​

optional charSpacing?: number

Character spacing in points, as TextPropsOptions.charSpacing. On a cell it applies to every run that states none.

Inherited from ​

TableCellProps.charSpacing


clrChange? ​

optional clrChange?: object

Recolor the image by mapping one source color to another (<a:clrChange>)

  • every pixel matching from is repainted to: the classic "swap the flat background out" recolour (MS-PPT > Format Picture > Picture Color > Set Transparent Color is the single-colour sibling)
  • colors accept HexColor or ThemeColor, same as fills / duotone

from ​

from: string

Source color to replace (<a:clrFrom>).

to ​

to: string

Replacement color (<a:clrTo>).

Example ​

ts
{ from: '000000', to: 'FF0000' } // turn black pixels red

Inherited from ​

ImageBaseProps.clrChange


color? ​

optional color?: string

Text color

  • HexColor or ThemeColor
  • MS-PPT > Format Shape > Text Options > Text Fill & Outline > Text Fill > Color

Examples ​

ts
'FF0000' // hex color (red)
ts
SchemeColor.text1 // Theme color (Text1)

Inherited from ​

TableCellProps.color


colspan? ​

optional colspan?: number

Cell colspan

Inherited from ​

TableCellProps.colspan


columns? ​

optional columns?: number

Number of text columns in the text body

  • PowerPoint: Format Shape > Shape Options > Size & Properties > Text Box > Columns > "Number"
  • range: 1-16

Default ​

ts
1

Example ​

ts
2 // flow text into two columns

Inherited from ​

TextPropsOptions.columns


columnSpacing? ​

optional columnSpacing?: number

Spacing between text columns (points)

  • PowerPoint: Format Shape > Shape Options > Size & Properties > Text Box > Columns > "Spacing"
  • only applies when columns > 1

Default ​

ts
0

Example ​

ts
10 // 10pt gap between columns

Inherited from ​

TextPropsOptions.columnSpacing


colW? ​

optional colW?: number | number[]


connectionSites? ​

optional connectionSites?: ShapeConnectionSite[]

Connection sites (<a:cxnLst>) for a custGeom shape: the points a connector can attach to. Positions are absolute in the object's own space (like points); a startShapeIdx/endShapeIdx on an addConnector indexes into this list.

Example ​

ts
[{ ang: 0, x: 1, y: 0 }, { ang: 180, x: 0, y: 1 }]

Inherited from ​

ShapeProps.connectionSites


crop? ​

optional crop?: object

Crop the source image to a sub-region by percentage edge insets, emitted verbatim as OOXML <a:srcRect>.

  • each value is the percent (at most 100) trimmed off that edge of the source image, the same model PowerPoint's Picture Format > Crop uses; l+r and t+b must each be < 100
  • a negative value pads that edge with empty space instead, as PowerPoint's Fit crop and sizing: 'contain' do
  • the remaining sub-region is stretched to fill the picture's displayed w×h box, so this is the faithful way to reproduce a deck that maps several icons out of one composite raster
  • operates on the source image directly (independent of natural-pixel measurement), so unlike sizing: 'crop' (which crops in displayed inches) it works for SVG and unmeasurable formats
  • mutually exclusive with sizing; if both are set crop wins and sizing is ignored

b? ​

optional b?: number

Percent trimmed from the bottom edge of the source image; negative pads it.

Default ​
ts
0

l? ​

optional l?: number

Percent trimmed from the left edge of the source image; negative pads it.

Default ​
ts
0

r? ​

optional r?: number

Percent trimmed from the right edge of the source image; negative pads it.

Default ​
ts
0

t? ​

optional t?: number

Percent trimmed from the top edge of the source image; negative pads it.

Default ​
ts
0

Example ​

ts
{ l: 0, t: 0, r: 50, b: 50 } // keep the top-left quadrant of the source image

Inherited from ​

ImageBaseProps.crop


cx? ​

optional cx?: Coord


cy? ​

optional cy?: Coord


data? ​

optional data?: string

base64-encoded string

  • Useful for avoiding potential path/server issues

Example ​

ts
'image/png;base64,iVtDafDrBF[...]=' // pre-encoded image in base-64

Inherited from ​

TextPropsOptions.data


diagonal? ​

optional diagonal?: TableCellDiagonals

The cell's corner-to-corner rules: PowerPoint's "Diagonal Down/Up Border".

Kept off border's tuple on purpose: see TableCellDiagonals. A diagonal on a merged cell is one stroke across the whole region, so only the span origin carries it. The covered cells inherit the origin's edges but never its diagonals.

Example ​

ts
diagonal: { tlToBr: { type:'solid', color:'C00000' } } // strike the cell out

Inherited from ​

TableCellProps.diagonal


duotone? ​

optional duotone?: object

Recolor the image as a two-tone (duotone) effect

  • maps the image's shadows to shadow and its highlights to highlight
  • serializes <a:duotone> inside the picture's <a:blip> (MS-PPT > Format Picture > Picture Color > Recolor)
  • colors accept HexColor or ThemeColor, same as fills
  • the classic brand treatment: tint stock photography into a single brand hue

highlight ​

highlight: string

Color mapped to the image's light/highlight tones.

shadow ​

shadow: string

Color mapped to the image's dark/shadow tones.

Example ​

ts
{ shadow: '250F6B', highlight: 'FFFFFF' } // deep-blue duotone

Inherited from ​

ImageBaseProps.duotone


fill? ​

optional fill?: FillOption

Shape fill color properties, or a bare Color as shorthand for a solid fill (FillOption).

Examples ​

ts
'FF0000' // hex color (red), shorthand for { color:'FF0000' }
ts
{ color:'FF0000' } // hex color (red)
ts
{ color:'0088CC', transparency:50 } // hex color, 50% transparent
ts
{ color:SchemeColor.accent1 } // Theme color Accent1

Inherited from ​

ShapeProps.fill


fit? ​

optional fit?: "resize" | "none" | TextFitShrinkProps | "shrink"

Shrink cell text to fit when it would overflow the cell's fixed height.

  • 'shrink' measures the wrapped text and bakes a reduced literal font size onto the cell's runs so the text fits. PowerPoint does not support text autofit (normAutofit) inside table cells, so there is no font-scale flag to set; the size itself is lowered, which both PowerPoint and LibreOffice render identically with no edit/resize.
  • Requires the cell font registered via PptxTs.registerFontMetrics. With no metrics registered at all it is a silent no-op (the cell keeps its authored size); once any face is registered, an unregistered face is estimated and warns once per write.
  • Only triggers when the cell's row has a fixed height that the text exceeds. With auto-height rows (no rowH/h), the row simply grows, so nothing shrinks.
  • Only 'shrink' is acted on for cells. 'resize' and the object form are ignored here: a table row already auto-grows to fit its tallest cell (the cell equivalent of spAutoFit), so there is nothing to bake. (The wider union is shared with TextPropsOptions.fit so table-level fit can cascade to cells.)

Example ​

ts
'shrink' // measured when the cell font is registered; else no-op

Inherited from ​

TableCellProps.fit


flipH? ​

optional flipH?: boolean

Flip horizontally?

Default ​

ts
false

Inherited from ​

ImageBaseProps.flipH


flipV? ​

optional flipV?: boolean

Flip vertical?

Default ​

ts
false

Inherited from ​

ImageBaseProps.flipV


fontFace? ​

optional fontFace?: string

Font face name

Applied to the Latin (<a:latin>) and complex-script (<a:cs>) font slots, matching how PowerPoint writes a font picked from the UI. The East Asian slot (<a:ea>) is left to inherit from the theme unless fontFaceEA is set. Forcing a Latin-only face into the East Asian slot duplicates/ghosts text in Office 365.

Example ​

ts
'Arial' // Arial font

Inherited from ​

TableCellProps.fontFace


fontFaceEA? ​

optional fontFaceEA?: string

East Asian font face name (<a:ea> slot), used to render CJK (Chinese/Japanese/Korean) glyphs

Independent of fontFace: set alone, it writes only <a:ea> and the Latin and complex-script slots keep inheriting. When omitted, <a:ea> inherits the theme East Asian font, which is what PowerPoint does for Latin fonts.

Example ​

ts
'微軟正黑體' // render East Asian glyphs with Microsoft JhengHei

Inherited from ​

TableCellProps.fontFaceEA


fontSize? ​

optional fontSize?: number

Font size

Example ​

ts
12 // Font size 12

Inherited from ​

TableCellProps.fontSize


glow? ​

optional glow?: TextGlowProps

Inherited from ​

TextPropsOptions.glow


grayscale? ​

optional grayscale?: boolean

Recolor the image to grayscale (<a:grayscl/>)

  • maps every pixel to its luminance grey (MS-PPT > Format Picture > Picture Color > Recolor > Grayscale)
  • the cheapest recolour: no payload
  • mutually exclusive with the other recolour modes (duotone/biLevel/clrChange); if several are set, the first present in document order wins on read-back

Default ​

ts
false

Example ​

ts
true // desaturate the image

Inherited from ​

ImageBaseProps.grayscale


guides? ​

optional guides?: ShapeGuide[]

Geometry guides (<a:gdLst>) for a custGeom shape: named construction formulas that connection sites / adjust handles can reference. Advanced: each formula is emitted verbatim.

Example ​

ts
[{ name: 'w2', formula: 'val 10800' }]

Inherited from ​

ShapeProps.guides


h? ​

optional h?: Coord | null

Height, as PositionProps.h. null leaves it unstated: the layout placeholder's, with placeholder.

Inherited from ​

ImageBaseProps.h


hasBandedColumns? ​

optional hasBandedColumns?: boolean


hasBandedRows? ​

optional hasBandedRows?: boolean


hasFirstColumn? ​

optional hasFirstColumn?: boolean


hasFooter? ​

optional hasFooter?: boolean


hasHeader? ​

optional hasHeader?: boolean


hasLastColumn? ​

optional hasLastColumn?: boolean


highlight? ​

optional highlight?: string

Text highlight color (hex format)

Example ​

ts
'FFFF00' // yellow

Inherited from ​

TableCellProps.highlight


horzOverflow? ​

optional horzOverflow?: "clip" | "overflow"

What happens to a single glyph wider than the cell's text width (a:tcPr/@horzOverflow).

  • 'clip' (PowerPoint's default) cuts the glyph off at the cell edge
  • 'overflow' lets it draw past the edge, over whatever is beside it

This is not a text-wrap switch, despite the name. Lines always wrap to the column width; only an individual character too wide to fit on a line by itself is affected, so it matters for oversized display type, wide CJK/emoji glyphs, and icon fonts in a narrow column. PowerPoint has no per-cell no-wrap at all: wrap="none" on a cell's a:bodyPr is discarded on the next save (probe: test/read/fixtures/authoring/probe-table-cell-wrap.ps1). 'clip' is written as asked but is the schema default, so PowerPoint drops the attribute again the first time it saves the deck. The visible result is the same either way, and leaving this unset emits nothing at all.

Default ​

ts
(unset; PowerPoint clips)

Example ​

ts
'overflow' // a 60pt glyph in a 0.5in column draws whole instead of being cut

Inherited from ​

TableCellProps.horzOverflow


optional hyperlink?: HyperlinkProps

Inherited from ​

ImageBaseProps.hyperlink


indentLevel? ​

optional indentLevel?: number

Outline level of the paragraph a run starts, as TextPropsOptions.indentLevel.

Inherited from ​

TableCellProps.indentLevel


isTextBox? ​

optional isTextBox?: boolean

Inherited from ​

TextPropsOptions.isTextBox


italic? ​

optional italic?: boolean

italic style

Default ​

ts
false

Inherited from ​

TableCellProps.italic


kerning? ​

optional kerning?: number

Kerning threshold in points, as TextPropsOptions.kerning. On a cell it applies to every run that states none.

Inherited from ​

TableCellProps.kerning


lang? ​

optional lang?: string

language

  • ISO 639-1 standard language code

Default ​

ts
'en-US' // english US

Example ​

ts
'fr-CA' // french Canadian

Inherited from ​

TableCellProps.lang


line? ​

optional line?: ShapeLineProps

Border line (<a:ln> outline) drawn around the image

  • same options as a shape outline; a picture supports a single outline, not per-side borders
  • MS-PPT: Format Picture > Line

Examples ​

ts
{ color: '0088CC', width: 2 }                   // 2pt blue border
ts
{ color: '666666', width: 1, dashType: 'dash' } // dashed gray border

Inherited from ​

ImageBaseProps.line


lineSpacing? ​

optional lineSpacing?: number

Line spacing in points, as TextPropsOptions.lineSpacing.

Inherited from ​

TableCellProps.lineSpacing


lineSpacingMultiple? ​

optional lineSpacingMultiple?: number

Line spacing as a multiple of single spacing, as TextPropsOptions.lineSpacingMultiple.

Inherited from ​

TableCellProps.lineSpacingMultiple


margin? ​

optional margin?: Margin

Cell margin (inches), in [top, right, bottom, left] order

Default ​

ts
[0.05, 0.1, 0.05, 0.1]

Overrides ​

TableCellProps.margin


objectLock? ​

optional objectLock?: ObjectLockProps

Object lock flags (DrawingML a:spLocks / a:picLocks / a:graphicFrameLocks)

  • restrict how the object can be manipulated in PowerPoint (e.g. prevent moving, resizing, or grouping)
  • each flag maps 1:1 to the OOXML attribute of the same name; only flags set to true are emitted
  • PowerPoint UI: Selection Pane / right-click protections (most locks are honored at edit time, not as a password)
  • flags only apply to the object types that support them (see each flag); flags set on an unsupported object type are ignored with a console warning

Examples ​

ts
{ noMove: true, noResize: true } // pin an object in place
ts
{ noGrp: true } // exclude from grouping

Inherited from ​

ImageBaseProps.objectLock


objectName? ​

optional objectName?: string

Object name

  • used instead of the default name for the object's kind: Text 1, Shape 2, Image 1 and so on, numbered per kind (see docs/reference/object-names.md)
  • PowerPoint: Home > Arrange > Selection Pane...

Example ​

ts
'Antenna Design 9'

Inherited from ​

ImageBaseProps.objectName


outerBorder? ​

optional outerBorder?: StrokeProps | [StrokeProps?, StrokeProps?, StrokeProps?, StrokeProps?]

Table perimeter border. addTableDefinition normalizes it to a 4-tuple (TRBL, sides left unset as undefined) before it reaches the emitter, so the serializer never has to re-handle the single-BorderProps form.


outline? ​

optional outline?: object

color ​

color: string

size ​

size: number

Inherited from ​

TextPropsOptions.outline


paraIndent? ​

optional paraIndent?: number | "inherit"

First-line indent (points): a:pPr/@indent, the offset of the paragraph's FIRST line from paraMarginLeft. Negative hangs the first line to the left of the body, which is what a bulleted paragraph does; positive indents it to the right, the "first line indented" prose form. PowerPoint: Paragraph > Indentation > Special.

  • 'inherit' writes no @indent at all, so the paragraph takes whatever its list style (a:lstStyle → placeholder → layout → master) sets: the same third state bullet spells, on the attribute beside it
  • omitting the option keeps the bullet-derived default: a drawn bullet hangs the first line by its margin, bullet: false writes indent="0", bullet: 'inherit' writes nothing
  • a value here overrides all of those, in every bullet state

Examples ​

ts
-18 // hang the first line 18pt left of the body text
ts
18 // indent the first line 18pt, prose style
ts
'inherit' // keep the list style's indent, even on a bulleted paragraph

Remarks ​

Read from the opening run of a paragraph, like bullet and unlike align; a value on a continuation run is ignored.

Inherited from ​

TableCellProps.paraIndent


paraMarginLeft? ​

optional paraMarginLeft?: number | "inherit"

Left margin of the paragraph (points): a:pPr/@marL, where the paragraph's body text starts. This is the paragraph's own margin, not the text frame's internal padding (margin) and not the discrete outline level (indentLevel, which writes a:p/@lvl). PowerPoint: Paragraph > Indentation > Before text.

  • 'inherit' writes no @marL at all, so the paragraph takes whatever its list style (a:lstStyle → placeholder → layout → master) sets, the third state that omission cannot spell, since omitting it writes the bullet-derived default
  • omitting the option keeps that default: a drawn bullet writes its own margin (see bullet.indent), bullet: false writes marL="0", bullet: 'inherit' writes nothing
  • a value here overrides all of those, in every bullet state

Examples ​

ts
36 // body text starts 36pt (0.5in) from the frame's text edge
ts
'inherit' // keep the list style's margin, even on a bulleted paragraph

Remarks ​

Read from the opening run of a paragraph, like bullet and unlike align; a value on a continuation run is ignored.

Inherited from ​

TableCellProps.paraMarginLeft


paraSpaceAfter? ​

optional paraSpaceAfter?: number

Space after the paragraph in points, as TextPropsOptions.paraSpaceAfter.

Inherited from ​

TableCellProps.paraSpaceAfter


paraSpaceBefore? ​

optional paraSpaceBefore?: number

Space before the paragraph in points, as TextPropsOptions.paraSpaceBefore.

Inherited from ​

TableCellProps.paraSpaceBefore


path? ​

optional path?: string

URL or relative path

Example ​

ts
'https://onedrives.com/myimg.png` // retrieve image via URL
@example '/home/user/images/myimg.png` // retrieve image via local path

Inherited from ​

TextPropsOptions.path


placeholder? ​

optional placeholder?: PlaceholderOption

Name of a picture placeholder defined on the slide layout/master to populate, or a PlaceholderBinding that states the p:ph to write

  • when it matches a layout/master placeholder, the image inherits that placeholder's position and size for any of x/y/w/h not supplied explicitly; explicit values always win
  • a name that matches none writes no p:ph; a binding's idx or type writes one regardless

Examples ​

ts
'picph'
ts
{ type: 'pic', idx: 13 }

See ​

https://docs.microsoft.com/en-us/office/vba/api/powerpoint.ppplaceholdertype

Inherited from ​

ImageBaseProps.placeholder


points? ​

optional points?: GeometryPoint[]

Clip the image to an arbitrary freeform path (custGeom)

  • takes precedence over shape / rounding when present
  • coordinates are authored in the image's own inch/EMU space (0..w, 0..h), not slide-relative and not normalized
  • supports the same path DSL as freeform shapes: moveTo / lnTo / cubicBezTo / quadBezTo / arcTo / close

Example ​

ts
[{ x: 1, y: 0 }, { x: 2, y: 2 }, { x: 0, y: 2 }, { close: true }] // triangular photo clip

Inherited from ​

ImageBaseProps.points


rectRadius? ​

optional rectRadius?: number

Corner radius (inches) of the clip shape, for 'roundRect' and the other rounded presets

  • resolved against the shorter side of the box and written as the preset's corner guide
  • not clamped: a radius past half the shorter side is written as given, and PowerPoint draws the corner at its limit
  • omitted, the preset keeps its own radius

Inherited from ​

ImageBaseProps.rectRadius


rotate? ​

optional rotate?: number

Image rotation (degrees)

  • range: -360 to 360

Default ​

ts
0

Example ​

ts
180 // rotate image 180 degrees

Inherited from ​

ImageBaseProps.rotate


rounding? ​

optional rounding?: boolean

Enable image rounding (clips the image to a circle/ellipse)

  • shorthand for shape: 'ellipse'; shape takes precedence when both are set

Default ​

ts
false

Inherited from ​

ImageBaseProps.rounding


rowH? ​

optional rowH?: number | (number | null)[]


rowspan? ​

optional rowspan?: number

Cell rowspan

Inherited from ​

TableCellProps.rowspan


rtl? ​

optional rtl?: boolean


rtlMode? ​

optional rtlMode?: boolean

Whether to enable right-to-left mode

Default ​

ts
false

Inherited from ​

TextPropsOptions.rtlMode


shadow? ​

optional shadow?: ShadowProps

Shadow Props

  • MS-PPT > Format Picture > Shadow

Example ​

ts
{ type: 'outer', color: '000000', transparency: 50, blur: 20,  offset: 20, angle: 270 }

Inherited from ​

ImageBaseProps.shadow


shape? ​

optional shape?: SHAPE_NAME

Clip the image to a preset shape geometry ("fit image into shape")

  • accepts any PowerPoint preset geometry name, e.g. 'roundRect', 'hexagon', 'ellipse'
  • combine with sizing: { type: 'cover', ... } for an aspect-correct fill of the shape box
  • use rectRadius to set the corner radius for 'roundRect'

Examples ​

ts
'roundRect' // rounded-rectangle avatar
ts
'hexagon'   // hexagonal photo

Inherited from ​

ImageBaseProps.shape


shapeAdjust? ​

optional shapeAdjust?: ShapeAdjustValue | ShapeAdjustValue[]

Preset-geometry adjustment handles (<a:avLst> guides) for the clip shape.

  • tune adjustment handles that lack a dedicated option, e.g. chevron point depth
  • accepts a single guide or an array; each value is a 0.0–1.0 fraction (see ShapeAdjustValue)

Example ​

ts
{ name: 'adj', value: 0.25 }

Inherited from ​

ImageBaseProps.shapeAdjust


sizing? ​

optional sizing?: object

Image sizing options

  • omit entirely for the default: a raster fills the w×h box, a vector (SVG) source is letterboxed to its own aspect ratio inside that box

h? ​

optional h?: Coord

Image height

  • inches or percentage
  • defaults to the picture's own h
Examples ​
ts
10.25 // position in inches
ts
'75%' // position as percentage of slide size

type ​

type: "contain" | "cover" | "crop" | "stretch"

Sizing type

  • cover / contain fit the image into the w×h box using the image's natural aspect ratio, read from the embedded PNG/JPEG/GIF/BMP/WebP header, or from an SVG's width/height or viewBox. If the natural size cannot be determined (an unrecognized format, or an SVG carrying neither) the displayed w/h ratio is used as a fallback and a warning is logged.
  • crop cuts a window out of the displayed image using the x/y/w/h offsets.
  • stretch fills the box regardless of aspect ratio. This is what a raster does anyway; name it explicitly to opt a vector source out of its aspect-correct default.

w? ​

optional w?: Coord

Image width

  • inches or percentage
  • defaults to the picture's own w, which is what cover/contain almost always want
Examples ​
ts
10.25 // position in inches
ts
'75%' // position as percentage of slide size

x? ​

optional x?: Coord

Offset from left to crop image

  • crop only
  • inches or percentage
Examples ​
ts
10.25 // position in inches
ts
'75%' // position as percentage of slide size

y? ​

optional y?: Coord

Offset from top to crop image

  • crop only
  • inches or percentage
Examples ​
ts
10.25 // position in inches
ts
'75%' // position as percentage of slide size

Inherited from ​

ImageBaseProps.sizing


softBreakBefore? ​

optional softBreakBefore?: boolean

Add a soft line-break (shift+enter) before line text content

Default ​

ts
false

Inherited from ​

TableCellProps.softBreakBefore


strike? ​

optional strike?: NonNullable<boolean | "noStrike" | "sngStrike" | "dblStrike" | undefined>

Strikethrough, as TextPropsOptions.strike takes it on a text run. On a cell it applies to every run that states none; on a run inside a cell's text, to that run.

Inherited from ​

TableCellProps.strike


subscript? ​

optional subscript?: boolean

Inherited from ​

TextPropsOptions.subscript


superscript? ​

optional superscript?: boolean

Inherited from ​

TextPropsOptions.superscript


svg? ​

optional svg?: string

Raw SVG markup to embed as the image source

  • convenience for data: 'data:image/svg+xml;base64,...'; pptx-ts encodes it for you
  • ignored when data or path is also provided

Example ​

ts
'<svg viewBox="0 0 24 24">...</svg>'

Inherited from ​

ImageBaseProps.svg


tableFill? ​

optional tableFill?: FillOption

Table background (a:tblPr fill), as distinct from fill, which is stamped onto each cell.


tableStyle? ​

optional tableStyle?: `{${string}}`


tabStops? ​

optional tabStops?: object[]

tab stops

  • PowerPoint: Paragraph > Tabs > Tab stop position

alignment? ​

optional alignment?: "r" | "ctr" | "l" | "dec"

position ​

position: number

Example ​

ts
[{ position:1 }, { position:3 }] // Set first tab stop to 1 inch, set second tab stop to 3 inches

Inherited from ​

TableCellProps.tabStops


textDirection? ​

optional textDirection?: "horz" | "vert" | "vert270" | "wordArtVert"

text direction horz = horizontal vert = rotate 90^ vert270 = rotate 270^ wordArtVert = stacked

Default ​

ts
'horz'

Inherited from ​

TableCellProps.textDirection


textWarp? ​

optional textWarp?: "textNoShape" | "textPlain" | "textStop" | "textTriangle" | "textTriangleInverted" | "textChevron" | "textChevronInverted" | "textRingInside" | "textRingOutside" | "textArchUp" | "textArchDown" | "textCircle" | "textButton" | "textArchUpPour" | "textArchDownPour" | "textCirclePour" | "textButtonPour" | "textCurveUp" | "textCurveDown" | "textCanUp" | "textCanDown" | "textWave1" | "textWave2" | "textDoubleWave1" | "textWave4" | "textInflate" | "textDeflate" | "textInflateBottom" | "textDeflateBottom" | "textInflateTop" | "textDeflateTop" | "textDeflateInflate" | "textDeflateInflateDeflate" | "textFadeRight" | "textFadeLeft" | "textFadeUp" | "textFadeDown" | "textSlantUp" | "textSlantDown" | "textCascadeUp" | "textCascadeDown"

Preset text warp / WordArt shape (<a:bodyPr><a:prstTxWarp prst="..">), which bends the text along a preset path (arch, circle, wave, …): the whole ST_TextShapeType set.

Examples ​

ts
'textArchUp' // bend text along an upward arch (e.g. a label following a ring/arc)
ts
'textCircle'

Inherited from ​

TableCellProps.textWarp


transparency? ​

optional transparency?: number

Transparency (percent)

  • MS-PPT > Format Picture > Picture > Picture Transparency > Transparency
  • range: 0-100

Default ​

ts
0

Example ​

ts
25 // 25% transparent

Inherited from ​

ImageBaseProps.transparency


underline? ​

optional underline?: boolean | { color?: string; style?: "none" | "words" | "sng" | "dbl" | "heavy" | "dotted" | "dottedHeavy" | "dash" | "dashHeavy" | "dashLong" | "dashLongHeavy" | "dotDash" | "dotDashHeavy" | "dotDotDash" | "dotDotDashHeavy" | "wavy" | "wavyHeavy" | "wavyDbl"; }

underline properties

  • PowerPoint: Font > Color & Underline > Underline Style/Underline Color
  • style is the full ST_TextUnderlineType enumeration (ECMA-376 §20.1.10.81)
  • 'none' is the explicit off: it writes a:rPr/@u="none", which overrides an underline the run would otherwise inherit from its list style, placeholder, layout or master. Omitting the option instead states nothing and lets that inheritance stand. The two are different facts, not two spellings of one.
  • true is shorthand for { style: 'sng' }, a single line. false states nothing, as omitting the option does, so an inherited underline stands; { style: 'none' } is the explicit off.

Default ​

ts
(unset) inherit

Examples ​

ts
underline: true // single underline
ts
underline: { style: 'dbl', color: 'FF0000' } // red double underline

Inherited from ​

TableCellProps.underline


valign? ​

optional valign?: VAlign

vertical alignment

Default ​

ts
'top'

Inherited from ​

TableCellProps.valign


vert? ​

optional vert?: "horz" | "vert" | "vert270" | "wordArtVert" | "eaVert" | "mongolianVert" | "wordArtVertRtl"

Advanced/legacy escape hatch for the full ST_TextVerticalType range (e.g. eaVert, mongolianVert, wordArtVert). Prefer TextBaseProps.textDirection for the common cases; both map to a:bodyPr@vert.

Inherited from ​

TextPropsOptions.vert


w? ​

optional w?: Coord | null

Width, as PositionProps.w. null leaves it unstated: the layout placeholder's, with placeholder.

Inherited from ​

ImageBaseProps.w


wrap? ​

optional wrap?: boolean

Text wrap

Default ​

ts
true

Inherited from ​

TextPropsOptions.wrap


x? ​

optional x?: Coord | null

Horizontal position, as PositionProps.x. null leaves it unstated: the layout placeholder's, with placeholder.

Inherited from ​

ImageBaseProps.x


y? ​

optional y?: Coord | null

Vertical position, as PositionProps.y. null leaves it unstated: the layout placeholder's, with placeholder.

Inherited from ​

ImageBaseProps.y