Skip to content

Le modele PptxData

Quand vous appelez handler.load(buffer), vous obtenez un PptxData - l'objet racine qui contient toutes les diapositives, themes, masques et metadonnees.

Structure de haut niveau

ts
interface PptxData {
	slides: PptxSlide[];
	slideMasters: PptxSlideMaster[];
	theme?: PptxTheme;
	themeColorMap: Record<string, string>;
	widthEmu: number; // largeur de diapositive en EMU
	heightEmu: number; // hauteur de diapositive en EMU
	metadata?: PptxMetadata;
}

PptxSlide

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

L'union PptxElement

PptxElement est une union discriminee sur le champ type. Les 11 types de variantes sont :

typeInterfaceDescription
'text'TextPptxElementZones de texte, titres, corps
'image'ImagePptxElementImages raster et metafichiers EMF/WMF
'shape'ShapePptxElementFormes geometriques et conecteurs
'table'TablePptxElementTableaux avec des lignes/colonnes
'chart'ChartPptxElementGraphiques (23 types)
'group'GroupPptxElementGroupes contenant d'autres elements
'connector'ConnectorPptxElementConnecteurs / lignes
'smartArt'SmartArtPptxElementDiagrammes SmartArt
'media'MediaPptxElementAudio / video incorpore
'ink'InkPptxElementEncre numerique
'ole'OlePptxElementObjets OLE incorpores

Champs communs

Tous les types d'elements partagent ces champs de base :

ts
interface PptxElementBase {
	type: string;
	id: string;
	x: number; // position en pixels approximatifs
	y: number;
	width: number;
	height: number;
	rotation?: number;
	name?: string;
	hidden?: boolean;
}

Travailler avec des elements

Affinez toujours sur type avant d'acceder aux champs specifiques au variant :

ts
for (const element of slide.elements) {
	if (element.type === 'text') {
		// element est maintenant TextPptxElement
		console.log(element.text, element.fontFamily, element.fontSize);
	}
	if (element.type === 'group') {
		// recurse dans les enfants
		processElements(element.children);
	}
}

Lectures connexes

Released under the Apache-2.0 License.