PPTX

导出

将 .pptx 文件生成为 Buffer、Blob、Base64、字符串或流

PackerPresentation 转换为各种输出格式。

概览

import { Packer, Presentation } from "@office-open/pptx";

const pres = new Presentation({
    /* ... */
});
方法环境返回值
Packer.toBuffer(pres)Node.jsPromise<Buffer>
Packer.toBlob(pres)浏览器Promise<Blob>
Packer.toBase64String(pres)通用Promise<string>
Packer.toString(pres)通用Promise<string>
Packer.toStream(pres)Node.jsNodeJS.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");
Copyright © 2026