FrameSeq 文档

导出 PowerPoint#

FrameSeq 可以把幻灯片导出为 .pptx,不需要安装 Microsoft PowerPoint。导出器先让浏览器完成正常的 FrameSeq 布局,再把测量到的对象映射成 PowerPoint 坐标。

可编辑导出#

运行:

npm run pptx

或者直接用 CLI:

npx frameseq pptx slides.ts
npx frameseq pptx slides.ts --output output/my-talk.pptx

默认输出到 output/pptx/<入口名>.pptx。

可编辑导出采用混合映射:

FrameSeq 内容 PowerPoint 结果
普通文字、列表、代码 可编辑文本框
矩形和圆 可编辑的 PowerPoint 图形
线与箭头 可编辑的 PowerPoint 线条
完整边框 原生的 PowerPoint 图形边框
局部边框(比如 border-bottom) 对应边上的可编辑线条对象
图片 PowerPoint 图片对象
table() PowerPoint 表格,保留线条和对齐,单元格可编辑
chart() 用同一份数据画的 PowerPoint 图表,可以在 PowerPoint 里编辑
LaTeX 公式、行内公式、Typst、编译后的 LaTeX 片段、图标、二维码,以及单元格里有公式的表格 高分辨率图片对象
演讲者备注 PowerPoint 演讲者备注

结构化布局和 position() 使用的是最终的浏览器几何,所以 PowerPoint 里的坐标遵循与 HTML、PDF 相同的 split()、grid()、canvas() 和主题布局。用 .fit() 缩小过的文字,保持它在浏览器里得到的字号。为纸张制作的演示会变成纸张尺寸的幻灯片,比如 A0 海报是 841 × 1189 mm;见海报与打印。

扁平化导出#

当视觉保真度比对象级可编辑更重要时,用扁平化模式:

npx frameseq pptx slides.ts --flatten

每一页变成一张铺满 PowerPoint 页面的高分辨率图片。演讲者备注仍然保留,但可见内容不再是可单独编辑的对象。

大量依赖渐变、阴影、滤镜、复杂自定义 HTML 或 PowerPoint 无法直接表达的 CSS 效果时,推荐扁平化模式。

字体与视觉差异#

可编辑的 PowerPoint 文字使用浏览器报告的字族。请在打开 .pptx 的电脑上安装同样的字体,否则 PowerPoint 可能替换字体并改变换行。收件人无法安装演示字体时,用 --flatten。

PowerPoint 每个文本 run 只能存一个字体名,所以包含中日韩字符的 run 会用主题字族链里的第一个 CJK 字族导出,而不是排在最前的拉丁字族。这些字体本身也带拉丁字形,所以中英混排的 run 仍然一致。想控制传给 PowerPoint 的字体名,把你偏好的字族放在最前:

presentation({ font: { family: '"Microsoft YaHei", Inter, sans-serif' } });

CSS 布局和坐标会被保留,但并非每种浏览器视觉效果都有 PowerPoint 原生对应物。纯色填充、排版、基础图形和连线是直接映射的。四条 CSS 边框一致时,FrameSeq 使用原生图形边框;只有部分边可见或各边不同时,它为这些边生成独立的可编辑线条对象。公式、Typst 和编译后的 LaTeX 片段以高分辨率图片保持视觉稳定。

揭示步骤#

PPTX 导出为每一页 FrameSeq 幻灯片生成一页 PowerPoint。所有 steps() 和 showAt() 的内容都可见,与 PDF 和打印行为一致。交互式的逐步揭示仍然是 HTML 演示独有的能力。