开源版本
Slim Office 是开源发布。演示部分在仓库的 present/ 目录。它可以打开 .pptx,在浏览器里编辑和放映,再写出 .pptx、HTML、PDF 或 PNG。
许可证是 AGPL-3.0-or-later。版权人是 Sliiu Inc。闭源嵌入需要商业授权,见该仓库的 COMMERCIAL.md,或邮件 support@slimppt.com。
账号、在线分享、在线存储、直播放映、协作和本站提供的模型不在这些包里。
安装
| 要做的事 | 包 |
|---|---|
读 .pptx | @sliiu/present-parser |
写 .pptx | @sliiu/present-serializer |
| 放映,或导出 HTML / PDF / PNG | @sliiu/present-player |
| 编辑 | @sliiu/present-editor |
| 放映插件 | @sliiu/present-plugin-sdk |
| 自备密钥调用模型 | @sliiu/present-ai |
只放映时安装 player。editor 会同时装上文字识别、OpenCV 和公式渲染。
npm install @sliiu/present-parser @sliiu/present-player @sliiu/present-editor每个入口都带 TypeScript 类型、ESM import 和 CommonJS require。
读写文件
parsePptx 接受 ArrayBuffer、Uint8Array、Blob 或 File。加密文件和旧版 .ppt 会拒绝。writePptx 返回 .pptx 字节。
import { parsePptx } from "@sliiu/present-parser";
import { writePptx } from "@sliiu/present-serializer";
const pres = await parsePptx(await file.arrayBuffer());
const pptx = writePptx(pres);const { parsePptx } = require("@sliiu/present-parser");放映和编辑
在打包进页面之后,挂到已有的元素上。mount 和 mountEditor 接收解析后的演示文稿,不接收原始文件。
import { mount } from "@sliiu/present-player";
import { mountEditor } from "@sliiu/present-editor";
mount(stage, pres);
mountEditor(editor, pres);PDF 和 PNG 在浏览器里生成。exportPresentationPdf 返回一份 PDF Blob。snapshotAll 按页返回 PNG Blob。
import { exportPresentationPdf, snapshotAll } from "@sliiu/present-player";
const pdf = await exportPresentationPdf(pres);
const slides = await snapshotAll(pres);普通 HTML 页面
dist/player.iife.js 用普通 script 引入。全局名是 PPTPlayer。
<script src="node_modules/@sliiu/present-player/dist/player.iife.js"></script>
<script>
PPTPlayer.mount(document.querySelector("#stage"), presentation);
</script>插件文件是 dist/plugin-sdk.iife.js,全局名 PPTPluginSDK。放映脚本里已经有 PPTPlayer.definePlugin。
要写出一份单独的 HTML,把 player.iife.js 的文本交给 buildHtml:
import { readFileSync } from "node:fs";
import { buildHtml } from "@sliiu/present-player/export";
const playerScript = readFileSync(
"node_modules/@sliiu/present-player/dist/player.iife.js",
"utf8",
);
const html = buildHtml(pres, playerScript, { title: "Deck" });buildHtmlBundle 写出 HTML 和 assets/ 目录,而不是单文件。
其他入口
| 路径 | 用途 |
|---|---|
@sliiu/present-player/export | buildHtml、buildHtmlBundle |
@sliiu/present-player/iife | 浏览器单文件 |
@sliiu/present-serializer/source-json | 原始压缩包的 JSON 形式 |
@sliiu/present-editor/commands | 编辑命令 |
@sliiu/present-ai/config | 自备密钥的配置 |
@sliiu/present-ui/tokens.css | 界面变量 |
@sliiu/present-plugin-sdk/iife | 插件单文件 |
import { definePlugin } from "@sliiu/present-plugin-sdk";
import { defaultConfig, parseConfig } from "@sliiu/present-ai/config";definePlugin 检查 id 和 activate。在浏览器里,它会把插件登记给下一次 PPTPlayer.mount。
包
@sliiu/present-player 和 @sliiu/present-editor 会装上它们依赖的包。要直接调用某一层时,再单独安装。
| 包 | 作用 |
|---|---|
@sliiu/present-animation | 页内动画的时间线和缓动 |
@sliiu/present-core | 幻灯片、形状和颜色的数据结构 |
@sliiu/present-parser | 读 .pptx |
@sliiu/present-serializer | 写 .pptx |
@sliiu/present-three-bake | 把立体形状准备成渲染器用的场景 |
@sliiu/present-renderer | 把幻灯片画到 SVG、Canvas 或 WebGL |
@sliiu/present-transition-fx | 翻页切换和 Morph |
@sliiu/present-plugin-sdk | 放映插件 |
@sliiu/present-themes | 主题、配色和装饰 |
@sliiu/present-ui | 界面变量和控件。样式文件是 tokens.css |
@sliiu/present-player | 放映,以及 HTML / PDF / PNG |
@sliiu/present-editor | 编辑界面 |
@sliiu/present-ai | 自备密钥调用模型 |
视频导出时,浏览器从 unpkg 加载 @ffmpeg/core。这段是 GPL-2.0-or-later,不在商业授权里。其余第三方许可证见仓库里的 THIRD-PARTY-NOTICES.md。