
pptx
Perpustakaan JavaScript Sumber Terbuka untuk PowerPoint
Buat, Edit, Validasi & Animasi File PPTX di Node.js & Peramban dengan Kepatuhan ECMA-376 Penuh.
Apa itu pptx?
@office-kit/pptx adalah pustaka JavaScript modern yang bertipe untuk menghasilkan dan mengedit file PowerPoint (.pptx) baik di lingkungan Node.js maupun browser. Dibangun di sekitar spesifikasi ECMA-376 PresentationML, pustaka ini menyediakan model objek yang kuat yang mencerminkan skema XML resmi. Tidak seperti banyak alternatif, ia menyediakan satu bundel ESM yang berfungsi secara konsisten di semua lingkungan, menghindari XML berbasis string yang rapuh, dan menghasilkan file yang divalidasi oleh validator Microsoft Open XML SDK.
Perpustakaan ini mendukung dua alur kerja: mengedit templat yang ada dan membuat dek dari awal. Ia menangani slide, bentuk, teks, tabel, diagram, animasi, komentar, dan transisi dengan pengetikan kuat dan dukungan tree-shaking untuk ukuran bundel minimal (~60 KB untuk pemuatan/penyimpanan dasar). Desainnya memastikan keamanan round-trip—konten yang tidak dimodelkan dipertahankan, tidak dihapus—menjadikannya ideal untuk penggunaan produksi di mana validitas skema dan kompatibilitas lintas platform (PowerPoint, Keynote, Google Slides, LibreOffice) sangat penting.
Memulai dengan pptx
Instal @office-kit/pptx melalui npm, pnpm, atau yarn. Perpustakaan ini didistribusikan sebagai bundel ESM dan mendukung tree-shaking untuk jejak memori minimal. Setelah instalasi, impor fungsi seperti `loadPresentation`, `savePresentation`, atau `createPresentation` untuk mulai membuat atau mengedit file PPTX. API-nya konsisten di lingkungan Node.js dan browser, dan repositori resmi [pptx GitHub](https://github.com/office-kit/pptx) mencakup contoh penggunaan yang detail, alat validasi, serta panduan keterampilan untuk pengembangan berbantuan AI.
Instal pptx melalui NPM, pnpm, atau Yarn
# npm
npm install @office-kit/pptx
# pnpm
pnpm add @office-kit/pptx
# yarn
yarn add @office-kit/pptx
Edit Template PowerPoint
Penyuntingan templat adalah keunggulan utama @office-kit/pptx. Anda dapat memuat file PPTX yang ada, menemukan placeholder (mis., judul, isi), dan mengganti teks secara programatis—ideal untuk pembuatan laporan dinamis. Perpustakaan ini mendukung penggantian berbasis token di semua slide, sehingga pembaruan batch menjadi mudah. Ia mempertahankan integritas tata letak dan memastikan output tetap kompatibel dengan PowerPoint, Keynote, dan Google Slides. Alur kerja ini sangat berguna untuk presentasi berbasis templat di mana hanya konten yang berubah antar proses.
Bagaimana Mengganti Teks Template dalam 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);
Buat Deck dari Awal
Dengan `createPresentation()`, Anda dapat membuat satu set lengkap PowerPoint dari nol—tanpa template. Fungsi ini mengembalikan set yang terstruktur penuh dengan master, tema, dan tata letak default (`Blank`, `Title Slide`, `Title and Content`). Anda kemudian dapat menambahkan slide, menyisipkan kotak teks, gambar, tabel, dan diagram menggunakan API yang bertipe. Pendekatan ini memberikan kontrol penuh atas desain dan konten, memungkinkan pembuatan presentasi secara programatik untuk dasbor, laporan, atau set slide yang digerakkan AI sambil mempertahankan kepatuhan ECMA-376.
Bagaimana Membuat Dek PowerPoint Baru dari Awal?
import {
addTitleSlide,
createPresentation,
savePresentation,
} from '@office-kit/pptx';
const pres = createPresentation();
addTitleSlide(pres, 'Q3 Business Review');
const out: Uint8Array = await savePresentation(pres);
Grafik, Animasi & Komentar
@office-kit/pptx mendukung elemen slide yang kaya termasuk diagram (batang, garis, pai, area), animasi (fadeIn, fadeOut, appear), dan komentar. Diagram menyematkan data Excel langsung untuk diedit di PowerPoint, sementara animasi menggunakan efek bawaan dengan durasi yang dapat dikonfigurasi. Komentar memungkinkan Anda menambahkan catatan peninjau dengan metadata penulis dan penempatan opsional. Fitur-fitur ini membuat perpustakaan cocok untuk membuat presentasi interaktif dan kaya data yang memenuhi standar profesional serta lulus validasi skema.
Bagaimana Menambahkan Diagram dan Animasi ke Slide?
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);
Validasi & Kepatuhan Skema
Memastikan file PPTX mematuhi standar ECMA-376 sangat penting untuk kompatibilitas antar alat. @office-kit/pptx menyertakan `validatePresentation()` untuk mendeteksi masalah seperti hubungan yang hilang, ID slide yang tidak valid, atau referensi tata letak yang rusak. Ia juga menggunakan `xmllint` dalam CI bila tersedia untuk memvalidasi XML yang dihasilkan terhadap skema resmi. Lapisan validasi ini membantu menangkap kesalahan halus sebelum distribusi, memastikan presentasi dapat dibuka secara andal di PowerPoint, Keynote, Google Slides, dan LibreOffice—tanpa bergantung pada perilaku "buka dan berdoa".
Bagaimana Memvalidasi Presentasi 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.
