PPTX
导出
将演示文稿导出为 Buffer、Blob、Base64 或流
generatePresentation() 函数根据选项生成 .pptx 文件,并以指定格式返回结果。使用 generatePresentationSync() 进行同步生成,使用 generatePresentationStream() 进行流式输出。
generatePresentation
默认返回 Buffer(Node.js),适合文件 I/O 操作。
import { generatePresentation } from "@office-open/pptx";
import { writeFileSync } from "node:fs";
// 异步(非阻塞)
const buffer = await generatePresentation({
/* options */
});
writeFileSync("output.pptx", buffer);
输出类型
通过第二个参数控制输出格式:
// Uint8Array(跨平台)
const bytes = await generatePresentation(opts, { type: "uint8array" });
// Blob(浏览器)
const blob = await generatePresentation(opts, { type: "blob" });
// Base64 字符串(API 载荷)
const base64 = await generatePresentation(opts, { type: "base64" });
// ArrayBuffer
const ab = await generatePresentation(opts, { type: "arraybuffer" });
| type | 返回值 | 适用场景 |
|---|---|---|
"nodebuffer" | Buffer | Node.js 文件 I/O |
"uint8array" | Uint8Array | 跨平台原始字节 |
"blob" | Blob | 浏览器下载 |
"base64" | string | Data URL、API 载荷 |
"arraybuffer" | ArrayBuffer | 内存操作 |
同步变体
使用 generatePresentationSync() 进行同步生成 — 会阻塞主线程,但避免了异步开销:
import { generatePresentationSync } from "@office-open/pptx";
const buffer = generatePresentationSync({
/* options */
});
流式输出
使用 generatePresentationStream() 处理大型演示文稿 — 返回 ReadableStream,无需将整个文件缓存到内存:
import { generatePresentationStream } from "@office-open/pptx";
import { createWriteStream } from "node:fs";
import { Readable } from "node:stream";
const stream = generatePresentationStream({
/* options */
});
Readable.fromWeb(stream).pipe(createWriteStream("output.pptx"));
压缩选项
所有函数均支持压缩控制。默认行为与 Microsoft Office 一致:XML 使用 DEFLATE 级别 1(SuperFast);媒体按类型区分——已压缩格式(PNG/JPEG/GIF)使用 STORE,其余(EMF/WMF/BMP/TIFF)使用 DEFLATE 级别 1。
// 默认(MS Office 行为)
await generatePresentation(opts);
// XML 最大压缩
await generatePresentation(opts, { compression: { xml: 9 } });
// 不压缩
await generatePresentation(opts, { compression: { xml: 0 } });
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
compression.xml | number | 1 | DEFLATE 级别 0–9 |
compression.media | number | 1 | 仅可压缩媒体;PNG/JPEG/GIF 始终 STORE |
浏览器下载示例
const blob = await generatePresentation(opts, { type: "blob" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "output.pptx";
a.click();
URL.revokeObjectURL(url);