
pptx
Libreria JavaScript Open Source per PowerPoint
Crea, Modifica, Convalida e Anima File PPTX in Node.js e Browser con piena conformità ECMA-376.
Che cos'è pptx?
@office-kit/pptx è una libreria JavaScript moderna e tipizzata per generare e modificare file PowerPoint (.pptx) sia in ambienti Node.js che nel browser. Costruita attorno alla specifica ECMA-376 PresentationML, fornisce un modello di oggetti robusto che rispecchia lo schema XML ufficiale. A differenza di molte alternative, fornisce un unico bundle ESM che funziona in modo coerente su tutti gli ambienti, evita XML basato su stringhe fragili e genera file convalidati rispetto al validatore Open XML SDK di Microsoft.
La libreria supporta due flussi di lavoro: la modifica di template esistenti e la creazione di deck da zero. Gestisce diapositive, forme, testo, tabelle, grafici, animazioni, commenti e transizioni con tipizzazione forte e supporto al tree‑shaking per una dimensione minima del bundle (~60 KB per il caricamento/salvataggio di base). Il suo design garantisce la sicurezza del round‑trip—i contenuti non modellati vengono preservati, non rimossi—rendendola ideale per l'uso in produzione dove la validità dello schema e la compatibilità cross‑platform (PowerPoint, Keynote, Google Slides, LibreOffice) sono critiche.
Iniziare con pptx
Installa @office-kit/pptx tramite npm, pnpm o yarn. La libreria è distribuita come bundle ESM e supporta il tree‑shaking per un ingombro minimo. Dopo l'installazione, importa funzioni come `loadPresentation`, `savePresentation` o `createPresentation` per iniziare a creare o modificare file PPTX. L'API è coerente sia negli ambienti Node.js sia nei browser, e il repository ufficiale [GitHub di pptx](https://github.com/office-kit/pptx) include esempi di utilizzo dettagliati, strumenti di validazione e una guida di competenze per lo sviluppo assistito dall'IA.
Installa pptx tramite NPM, pnpm o Yarn
# npm
npm install @office-kit/pptx
# pnpm
pnpm add @office-kit/pptx
# yarn
yarn add @office-kit/pptx
Modifica i modelli PowerPoint
La modifica dei modelli è un punto di forza principale di @office-kit/pptx. Puoi caricare un file PPTX esistente, individuare i segnaposto (ad es., titolo, corpo) e sostituire il testo programmaticamente—ideale per la generazione dinamica di report. La libreria supporta la sostituzione basata su token su tutte le diapositive, rendendo gli aggiornamenti batch senza sforzo. Preserva l'integrità del layout e garantisce che l'output rimanga compatibile con PowerPoint, Keynote e Google Slides. Questo flusso di lavoro è particolarmente utile per presentazioni basate su modelli in cui solo il contenuto cambia tra le esecuzioni.
Come sostituire il testo del modello in un file PowerPoint?
import {
findSlidePlaceholder,
getSlides,
loadPresentation,
savePresentation,
setShapeText,
} from '@office-kit/pptx';
const pres = await loadPresentation(existingPptxBytes);
const cover = getSlides(pres)[0]!;
const title = findSlidePlaceholder(cover, 'title');
if (title) setShapeText(title, 'Q3 Review');
const body = findSlidePlaceholder(cover, 'body');
if (body) setShapeText(body, 'Numbers up and to the right.');
const out: Uint8Array = await savePresentation(pres);
Crea presentazioni da zero
Con `createPresentation()`, puoi creare un intero deck PowerPoint da zero—nessun modello richiesto. La funzione restituisce un deck completamente strutturato con un master, tema e layout predefiniti (`Blank`, `Title Slide`, `Title and Content`). Puoi quindi aggiungere diapositive, inserire caselle di testo, immagini, tabelle e grafici utilizzando API tipizzate. Questo approccio offre il pieno controllo su design e contenuto, consentendo la generazione programmatica di presentazioni per dashboard, report o deck di diapositive guidati dall'IA, mantenendo la conformità ECMA-376.
Come creare una nuova presentazione PowerPoint da zero?
import {
addTitleSlide,
createPresentation,
savePresentation,
} from '@office-kit/pptx';
const pres = createPresentation();
addTitleSlide(pres, 'Q3 Business Review');
const out: Uint8Array = await savePresentation(pres);
Grafici, animazioni e commenti
@office-kit/pptx supporta elementi diapositive ricchi, inclusi grafici (a barre, a linee, a torta, ad area), animazioni (fadeIn, fadeOut, appear) e commenti. I grafici incorporano dati Excel live per la modifica in PowerPoint, mentre le animazioni utilizzano effetti predefiniti con durate configurabili. I commenti consentono di aggiungere note del revisore con metadati dell'autore e posizionamento opzionale. Queste funzionalità rendono la libreria adatta alla creazione di presentazioni interattive e ricche di dati che soddisfano gli standard professionali e superano la validazione dello schema.
Come aggiungere un grafico e un'animazione a una diapositiva?
import {
addSlideChart,
getSlides,
loadPresentation,
setShapeAnimation,
savePresentation,
inches,
} from '@office-kit/pptx';
const pres = await loadPresentation(templateBytes);
const slide = getSlides(pres)[0]!;
addSlideChart(slide!, {
x: inches(0.5),
y: inches(0.5),
w: inches(8),
h: inches(4.5),
spec: {
kind: 'column',
categories: ['Q1', 'Q2', 'Q3', 'Q4'],
series: [
{ name: 'Revenue', values: [120, 180, 240, 300] },
{ name: 'Cost', values: [80, 90, 130, 160] },
],
title: 'FY26 plan',
},
});
const shape = getSlideShapes(slide)[0]!;
setShapeAnimation(shape, { effect: 'fadeIn', durationMs: 800 });
await savePresentation(pres);
Validazione e conformità allo schema
Assicurare che i file PPTX siano conformi a ECMA-376 è fondamentale per la compatibilità tra gli strumenti. @office-kit/pptx include `validatePresentation()` per rilevare problemi come relazioni mancanti, ID delle diapositive non validi o riferimenti di layout interrotti. Utilizza anche `xmllint` nella CI, quando disponibile, per convalidare l'XML generato rispetto agli schemi ufficiali. Questo livello di validazione aiuta a individuare errori sottili prima della distribuzione, garantendo che le presentazioni si aprano in modo affidabile in PowerPoint, Keynote, Google Slides e LibreOffice—senza fare affidamento sul comportamento "open and pray".
Come validare una presentazione PowerPoint?
import { validatePresentation } from '@office-kit/pptx';
const issues = validatePresentation(pres);
for (const i of issues) console.error(i.severity, i.message);
// Catches missing rels, dangling slide ids, layouts without masters, etc.
