Skip to content

Das PptxData-Modell

Wenn Sie handler.load(buffer) aufrufen, erhalten Sie ein PptxData - das Stammobjekt, das alle Folien, Designs, Master und Metadaten enthalt.

Struktur auf hoher Ebene

ts
interface PptxData {
	slides: PptxSlide[];
	slideMasters: PptxSlideMaster[];
	theme?: PptxTheme;
	themeColorMap: Record<string, string>;
	widthEmu: number; // Folienbreite in EMU
	heightEmu: number; // Folienhohe in EMU
	metadata?: PptxMetadata;
}

PptxSlide

ts
interface PptxSlide {
	elements: PptxElement[];
	layoutPath?: string;
	background?: PptxBackground;
	notes?: string;
	hidden?: boolean;
	slideNumber?: number;
	name?: string;
}

Die PptxElement-Union

PptxElement ist eine diskriminierte Union auf dem type-Feld. Die 11 Variantentypen sind:

typeInterfaceBeschreibung
'text'TextPptxElementTextfelder, Titel, Inhalt
'image'ImagePptxElementRasterbilder und EMF/WMF-Metadateien
'shape'ShapePptxElementGeometrische Formen und Verbinder
'table'TablePptxElementTabellen mit Zeilen/Spalten
'chart'ChartPptxElementDiagramme (23 Typen)
'group'GroupPptxElementGruppen, die andere Elemente enthalten
'connector'ConnectorPptxElementVerbinder / Linien
'smartArt'SmartArtPptxElementSmartArt-Diagramme
'media'MediaPptxElementEingebettetes Audio / Video
'ink'InkPptxElementDigitale Tinte
'ole'OlePptxElementEingebettete OLE-Objekte

Gemeinsame Felder

Alle Elementtypen teilen diese Basisfelder:

ts
interface PptxElementBase {
	type: string;
	id: string;
	x: number; // Position in naherungsweisen Pixeln
	y: number;
	width: number;
	height: number;
	rotation?: number;
	name?: string;
	hidden?: boolean;
}

Mit Elementen arbeiten

Engen Sie immer auf type ein, bevor Sie auf variantenspezifische Felder zugreifen:

ts
for (const element of slide.elements) {
	if (element.type === 'text') {
		console.log(element.text, element.fontFamily, element.fontSize);
	}
	if (element.type === 'group') {
		processElements(element.children);
	}
}

Weiterfuhrend

Released under the Apache-2.0 License.