Skip to content

Inicio rapido

Esta pagina recorre cuatro flujos comunes de extremo a extremo. Cada uno es autonomo y usa la API publica real.

1. Crear una presentacion desde cero

Use PptxHandler.create() para iniciar un nuevo deck, construya diapositivas con la API de construccion fluida, luego save() para obtener los bytes.

ts
import { PptxHandler } from 'pptx-viewer-core';

const { handler, data, createSlide } = await PptxHandler.create({
	title: 'Mi Presentacion',
	creator: 'Nombre del autor',
	theme: {
		name: 'Tema personalizado',
		colors: { accent1: '4472C4', accent2: 'ED7D31' },
		fonts: { majorFont: 'Calibri Light', minorFont: 'Calibri' },
	},
});

const slide = createSlide()
	.addText('Hola Mundo', { x: 100, y: 100, width: 600, height: 80, fontSize: 36 })
	.addShape('rect', { x: 100, y: 250, width: 300, height: 200 })
	.build();

data.slides.push(slide);

const output = await handler.save(data.slides);
await fs.writeFile('presentacion.pptx', Buffer.from(output));

2. Analizar y editar una presentacion existente

ts
import { PptxHandler } from 'pptx-viewer-core';

const handler = new PptxHandler();
const buffer = await fs.readFile('presentacion.pptx');
const data = await handler.load(buffer.buffer);

console.log(`Cargadas ${data.slides.length} diapositivas`);

for (const slide of data.slides) {
	for (const element of slide.elements) {
		if (element.type === 'text') {
			console.log(`Texto: ${element.text}`);
		}
	}
}

data.slides[0].elements[0].text = 'Titulo actualizado';
const output = await handler.save(data.slides);
await fs.writeFile('salida.pptx', Buffer.from(output));

Estrechar los elementos

slide.elements es un array de la union discriminada PptxElement. Compruebe siempre element.type antes de acceder a campos especificos del variante.

3. Convertir a Markdown

ts
import { PptxHandler, PptxMarkdownConverter } from 'pptx-viewer-core';

const handler = new PptxHandler();
const data = await handler.load(buffer);

const converter = new PptxMarkdownConverter('./salida', {
	sourceName: 'presentacion.pptx',
	includeSpeakerNotes: true,
	semanticMode: true,
});

const markdown = await converter.convert(data);
console.log(markdown);

4. Renderizar con el visualizador React

tsx
import { useState } from 'react';
import { PowerPointViewer } from 'pptx-react-viewer/viewer';

function App() {
	const [content, setContent] = useState<Uint8Array>();

	if (!content) return null;

	return (
		<PowerPointViewer content={content} canEdit onContentChange={(bytes) => setContent(bytes)} />
	);
}

Proximos pasos

Released under the Apache-2.0 License.