PPTX
导出
将 .pptx 文件生成为 Buffer、Blob、Base64、字符串或流
Packer 将 Presentation 转换为各种输出格式。
概览
import { Packer, Presentation } from "@office-open/pptx";
const pres = new Presentation({
/* ... */
});
| 方法 | 环境 | 返回值 |
|---|---|---|
Packer.toBuffer(pres) | Node.js | Promise<Buffer> |
Packer.toBlob(pres) | 浏览器 | Promise<Blob> |
Packer.toBase64String(pres) | 通用 | Promise<string> |
Packer.toString(pres) | 通用 | Promise<string> |
Packer.toStream(pres) | Node.js | NodeJS.ReadableStream |
toBuffer(Node.js)
返回一个可写入文件的 Buffer:
import { Packer, Presentation } from "@office-open/pptx";
import fs from "node:fs";
const pres = new Presentation({ slides: [] });
const buffer = await Packer.toBuffer(pres);
fs.writeFileSync("output.pptx", buffer);
toBlob(浏览器)
返回一个用于浏览器下载或上传的 Blob:
const blob = await Packer.toBlob(pres);
// 下载
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "presentation.pptx";
a.click();
URL.revokeObjectURL(url);
toBase64String
返回 Base64 编码的字符串:
const base64 = await Packer.toBase64String(pres);
console.log(base64);
// "UEsDBBQAAAAIA..."
可用于嵌入 HTML 或通过 API 发送:
// 用于嵌入的 Data URI
const dataUri = `data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,${base64}`;
toString
返回文件内容的原始字符串表示:
const str = await Packer.toString(pres);
toStream(Node.js)
返回一个可管道传输的可读流:
import { createWriteStream } from "node:fs";
const stream = Packer.toStream(pres);
stream.pipe(createWriteStream("output.pptx"));
完整示例 — 保存到文件
import { Presentation, Slide, Shape, Paragraph, TextRun, Packer } from "@office-open/pptx";
import fs from "node:fs";
const pres = new Presentation({
title: "Export Demo",
slides: [
new Slide({
children: [
new Shape({
x: 1,
y: 1,
width: 8,
height: 5,
paragraphs: [
new Paragraph({
alignment: "center",
children: [
new TextRun({
text: "Generated Presentation",
fontSize: 36,
bold: true,
}),
],
}),
],
}),
],
}),
],
});
const buffer = await Packer.toBuffer(pres);
fs.writeFileSync("export-demo.pptx", buffer);
console.log("Saved to export-demo.pptx");