@betteroffice/pptx

中文文档
0.5.1发布于 2026/10/27Apache-2.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 36.5万

PowerPoint-忠实的PPTX编辑器和取景器核心:全OOXML忠心,实时人类+AI代理协作. 无框架(Rust/Wasm).

中文使用文档
文档目录12 节
  1. 安装
  2. 使用量
  3. 入境点
  4. 布局和渲染
  5. 储蓄和所有权
  6. 代理提案
  7. 版本已检查的编辑批次
  8. 有结构的出口
  9. 评论和历史
  10. 协作
  11. 操作简介
  12. 文档

@ betteroffice/ pptx (英语)

无框架的PPTX通过Rust/WebAssembly引擎解析,编辑,渲染并保存. 使用它用自己的接口构建演示文稿查看器或编辑器.

安装

bun add @betteroffice/pptx

无对等依存.

使用量

将演示文稿的第一个幻灯片映入浏览器画布 :

import {
  initWasm,
  openPresentation,
  paintSlide,
  sizeCanvasForSlide,
} from '@betteroffice/pptx';

export async function renderFirstSlide(
  bytes: Uint8Array,
  fontBytes: Uint8Array,
  canvas: HTMLCanvasElement,
) {
  await initWasm();
  const deck = openPresentation(bytes, {
    fonts: [{ family: 'My Sans', bytes: fontBytes }],
  });
  try {
    const frame = deck.layoutSlide(0);
    const dpr = window.devicePixelRatio;
    sizeCanvasForSlide(canvas, frame, dpr);
    const context = canvas.getContext('2d');
    if (!context) throw new Error('Canvas 2D is unavailable');
    await paintSlide(context, frame, dpr);
  } finally {
    deck.dispose();
  }
}

fontBytes 持有 TTF 或 OTF 文件, 例如从您的服务器获取或装入 loadBundledFontBytes 从 @betteroffice/fonts。包含图像的幻灯片也需要图像解析器,描述 见下文。 反应编辑器在 @betteroffice/pptx-react 管理渲染和用户输入.

入境点

以下所有入境点均从 @betteroffice/pptx。 。 。 .

进入点说明
initWasm(input?)在打开或检查文件前初始化 Web Assembly 。 浏览器可以省略输入;节点主机可以通过WASM字节.
openPresentation(bytes, options?)打开同步 PresentationHandle 用于读取、编辑、布局和保存.
inspectPresentation(bytes, options?)在不打开编辑手柄的情况下检查解析内容; includeMedia: false 省略媒体.
sizeCanvasForSlide(canvas, frame, dpr, scale?)设置画布支持维度和 CSS 大小用于幻灯片 .
paintSlide(context, frame, dpr?, scale?, options?)在画布上同步绘制显示列表 .
slideToPng(frame, options?)返回一个巴布亚新几内亚 Blob 同步使用浏览器画布后端.
exportPptxStructured(bytes, options?)将结构化内容同步导出, 不使用字体或 DOM .
exportPptxMarkdown(bytes, options?)导出 Markdown 和源锁定同步 .
renderPptxMarkdown(content, options?)作为Markdown的同步结构化内容.

openPresentationSession(bytes, options?) 从 @betteroffice/pptx/worker 打开一个实验同步 工人会议.

openPresentation 接受 fonts, (中文(简体) ), fallbackFonts, (中文(简体) ), clientId,以及 initialUpdate后退字体 提供从跑步中消失的格言 从协作更新打开时,保留 源文件字节用来种子它,以便手柄可以保存.

核心直接拥有的手柄是同步的. React 编辑器在 Web Worker 中运行引擎 并暴露了承诺的回报 读取和出口.

布局和渲染

layoutSlide(index) 使用基于零的幻灯片索引. snapshot() 返回甲板模型,以及 layouts() 列表布局编号和名称 insertSlide。 。 。 . duplicateSlide 复制幻灯片内容和 发言者注意到,不包括评论。 形状坐标使用EMU(英语:Metric Units,每英寸914,400;文本抵消使用) UTF-16 代码单元.

对于嵌入式图像, 通过 paintSlide 选项对象 resolveImage,函数映射 资产 ID 到画布图像源 或对它的承诺 。 它会回来 null 用于不可用图像. slideToPng 接受相同的解析器和可选 scale。 。 。 .

储蓄和所有权

save() 返回已应用编辑的 PPTX 字节;未操作的幻灯片保留其源部分字节. 打电话 dispose() 当完成一个手柄. fork() 创建必须拥有的独立副本 亦将作处置.

代理提案

propose(agentId, note, edits) 级编辑而不修改承诺的甲板。 使用 listProposals, (中文(简体) ), previewProposal,以及 layoutProposalSlide 然后检查他们 acceptProposal 或者说 rejectProposal。 。 。 . 接受以一个倒数步骤适用集团;待决提案留在公开会议上.

layoutProposalDiffSlide 返回审查框架,并 textChanges; 将两者传递给 paintSlide 显示 插入和删除。 审查框架载有临时文本,仅供显示. 如果目标改变, 接受投放 StaleProposalError; 在选择前检查新预览 acceptProposal(id, { force: true })。 。 。 .

版本已检查的编辑批次

readContent, (中文(简体) ), findText, (中文(简体) ), validateEdits,以及 applyEdits 支持根据会话版本编辑. 见 在版本检查的批次中编辑 PPTX 对于请求形状、原子性、拒绝和限制.

有结构的出口

exportStructured 财务报告和审定财务报表 exportMarkdown 读取承诺状态; 无头导出接受文件字节. 见 PPTX 结构导出 选择、锚地、诊断和截断.

评论和历史

comments() 列出评论意见. setCommentFlavor 选择 legacy 或者说 modern 仅在该列表是 空无相. replyToComment 支持两种口味; setCommentStatus 需要现代评论. addComment 带走作者的 名称、文本和呼叫者提供 created 时间戳. setCommentPosition 使用 安全整数 EMU 坐标; 回复分享其根的位置 .

setUndoCaptureMode('manual') 组跟踪本地编辑直到 addUndoBoundary()· ; undoCaptureMode() 读取当前模式. undo() 财务报告和审定财务报表 redo() 导航历史. anchorCaret(storyId, index) 创建跟踪编辑的锚; resolveCaretAnchor 返回其 (单位:千美元) null 如果它的故事不再存在.

协作

PresentationHandle 执行复制界面 CollaborationProvider 从 @betteroffice/pptx/collaboration。 。 。 . 见 协作指南 用于运输, 共享种子、存在和连接生命周期.

操作简介

layoutSlideProfiled, (中文(简体) ), insertTextProfiled,以及 undoProfiled 揭露出发动机舞台时间. 见 操作简介 结果 形状和测量指导.

文档

版本与发布记录

@betteroffice/pptx 共发布 9 个版本,首次发布于 2026/07/20;过去 12 个月发布了 9 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.5.1latest2026/10/2711 天前
0.5.02026/10/2613 天前
0.2.02026/09/291 个月前
0.1.12026/09/171 个月前
0.1.02026/09/161 个月前
0.0.42026/08/202 个月前

关于 @betteroffice/pptx 的常见问题

@betteroffice/pptx 是什么?

PowerPoint-忠实的PPTX编辑器和取景器核心:全OOXML忠心,实时人类+AI代理协作. 无框架(Rust/Wasm).

如何安装 @betteroffice/pptx?

在项目目录运行 npm install @betteroffice/pptx,或使用 pnpm add / yarn add / bun add。

@betteroffice/pptx 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@betteroffice/pptx 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@betteroffice/pptx 可以商用吗?

@betteroffice/pptx 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@betteroffice/pptx 的下载量有多少?

根据 npm 官方下载统计,@betteroffice/pptx 在 2026/10/08 – 2026/11/06 这 30 天内被下载 365,226 次,日均约 12,174 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@betteroffice/pptx 还在维护吗?

最新版本 0.5.1 发布于 2026/10/27(11 天前);至今共发布 9 个版本,其中过去 12 个月发布了 9 个;首次发布于 2026/07/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。