D2 如何导出 PPTX 幻灯片并保留形状链接与翻页导航?
【免费下载链接】d2D2 is a modern diagram scripting language that turns text to diagrams.项目地址: https://gitcode.com/GitHub_Trending/d2/d2
如果你的 D2 文件包含多个 board(图层、场景或步骤),把整个文件导出成一张图片或 PDF 都不够直接用于汇报。D2 支持把这类多板文件导出为 PowerPoint 格式的.pptx:每个板对应一张幻灯片,板上声明的链接会保留为可点击区域,跨板跳转在演示模式下直接翻页。这篇文章覆盖从编写带链接的多板文件,到执行导出命令、在 PowerPoint 里验证链接与导航的完整过程。PPTX 导出自 v0.4.1 引入(见 v0.4.1 发布说明),请通过d2 --version确认本机版本不低于此版本。
准备条件:安装 D2 并确认版本
docs/INSTALL.md 推荐优先使用操作系统的包管理器直接安装。若选择官方安装脚本,注意该脚本会下载对应操作系统与架构的安装包并写入磁盘(默认安装到/usr/local,需要 sudo 时改用~/.local);脚本支持--dry-run先打印将要执行的命令而不实际安装:
curl -fsSL https://d2lang.com/install.sh | sh -s -- --dry-run curl -fsSL https://d2lang.com/install.sh | sh -s安装完成后运行d2 --version,确认输出为 v0.4.1 或更高版本;低版本没有 PPTX 导出目标。
编写带链接的多板 .d2 文件
PPTX 导出面向多板结构,link是其中的关键属性。仓库中的完整示例是 docs/examples/wcc/wcc.d2,其结构如下:
- 根板是一个流程图,标题为 "How to become the World Chess Champion",下面有
gm、qualify、win、match四个节点,依次用箭头连接;每个节点用link指向一个子板; layers组下为每个子板,板内可以继续用link指向更深的板、同板内的形状,或外部 URL。
How to become the World Chess Champion: { near: top-center shape: text style.font-size: 55 } gm: Become a Grandmaster (GM) { link: layers.gm } qualify: Qualify for the Candidates Tournament { link: layers.qualify } win: Win the Candidates Tournament { link: layers.win } match: Defeat the former Champion { link: layers.match } gm -> qualify -> win -> match layers: { gm: { description: |md # Become a Grandmaster (GM) | play: Play in FIDE-rated tournaments ➡️: { shape: text near: center-right link: steps.1 style.font-size: 24 } } }上面是 docs/examples/wcc/wcc.d2 的节选,完整文件还包含qualify、win、match三个子板。该文件展示了link的三种用法:
link: layers.gm这类写法指向另一个板,导出后点击该形状跳转到对应幻灯片;- 板内形状也可以声明
link,例如gm板里的➡️形状用link: steps.1跳到steps组的1号板,板内自引用写法是➡️.link: _._(见steps.2); - 指向外部资源的 URL 保持字符串形式,点击时在浏览器打开。
执行导出命令
在文件所在目录运行:
d2 docs/examples/wcc/wcc.d2 out.pptxD2 的通用命令形态是d2 [--watch=false] [--theme=0] file.d2 [file.svg | file.png | file.pdf | file.pptx | file.gif | file.txt],编译器根据输出扩展名选择渲染目标,.pptx即触发 PPTX 导出。
导出结果里保留了什么
导出结果是一张幻灯片 + 一组链接区域,具体行为如下:
- 每个板一张幻灯片:根板是第 1 张,
layers、steps、scenarios等子板按遍历顺序依次排页;仅作为分组节点的文件夹不占页码,不会生成幻灯片。 - 形状链接变为可点击区域:带
link的形状在幻灯片上对应一个透明点击区域,区域坐标记录在该幻灯片的 OOXML 关系文件(ppt/slides/_rels/*.xml.rels)中。内部跳转目标写成幻灯片编号;link的目标 URL 如果恰好匹配某个已渲染板的 ID,同样转为幻灯片内跳转,否则保持为外部链接。 - 顶部翻页导航条:开启导航时,每张幻灯片顶部有一条高度约 0.43 英寸(392,471 EMU,1 英寸 = 914,400 EMU)的条,显示从根板到当前板的标题路径;路径中每一段都是可点击的链接,点哪一段就跳回对应祖先板的幻灯片。这是"翻页导航"的主要入口。
- 幻灯片尺寸:生成的幻灯片为 9,144,000 × 5,143,500 EMU,即 10 英寸 × 5.625 英寸,16:9 比例。
验证导出结果
两种验证方式,任选其一即可确认链接与导航生效:
检查文件结构(只读,把
out替换为你自己的输出路径):unzip out.pptx -d out-pptx.pptx本质是按 OOXML 规范组织的一批.xml文件,解压后可以在ppt/slides/与ppt/slides/_rels/中看到每张幻灯片及其链接关系定义。在 PowerPoint 中实测:v0.4.1 发布说明 给出的官方示例 wcc.pptx 就是这份源文件导出的成品。按其说明验证:打开文件后点"演示"(present),在根幻灯片上点击
gm等形状,应跳转到layers.gm幻灯片;再在层内点击➡️跳到steps的板,点击外部 URL 形状应在浏览器打开;回到任意深板,点顶部面包屑中的任意一段,应跳回对应祖先板的幻灯片。
限制与注意事项
- 多板导出要求文件里至少有一个可渲染的板;纯文件夹结构的文件无法渲染成幻灯片。
link的内部目标必须指向可渲染的板。链接指向不存在的板、或点击区域取整后为空框时,导出直接报错,而不是静默丢弃该链接。- 多板导出有规模上限:最多 1,024 个板,总像素预算 256 MiB,编码结果预算 512 MiB;超出任一项导出中止。
- 写入文件的 D2 版本号只允许数字和
.,含字母的版本号可能导致 PowerPoint 无法打开生成的文件;这是工具自身的保护,一般使用正式版本不会触发。 - 更多安装方式(Homebrew、Standalone、Docker、从源码构建等)见 docs/INSTALL.md;想直接查看带链接演示文稿的源文件,参考 docs/examples/wcc/wcc.d2。
【免费下载链接】d2D2 is a modern diagram scripting language that turns text to diagrams.项目地址: https://gitcode.com/GitHub_Trending/d2/d2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考