PPT 转 PDF
把一份本地 .pptx 渲染成 PDF,不依赖用户手动"另存为"。多后端自动降级,稳定可用。
适用场景
- 本机不便用 PowerPoint/LibreOffice 的"另存为 PDF"。
- 需要把课件、演讲稿、演示文稿生成一份可分发文档。
- 注意:slidep 后端产出的是图片型 PDF(文字不可选中、不可再编辑);LibreOffice 后端产出矢量 PDF(可编辑)。若要矢量化且本机有 LibreOffice,会被优先采用。
渲染后端(自动选择,无需指定)
- LibreOffice(soffice / libreoffice):优先。产出矢量、可编辑 PDF,最稳。
- slidep(WorkBuddy 自带本地 PPT 工具):兜底。产出图片型 PDF。
- 约束:slidep必须由 shell 直接拉起,不能由 Python 的subprocess派生子进程调用——部分沙箱会因此拦截 wsl.exe 导致渲染失败。脚本已用 shell 渲染规避。
- 前置:本地 Office 编辑器服务(editor_sdk,http://localhost:39099)必须在线。WorkBuddy 打开过/预览过本地 PPT 时该服务才在线。脚本会先校验,若未在线会明确提示"先在 WorkBuddy 打开该 PPT 再运行"。
前置依赖
- 在支持 bash 的环境运行(WorkBuddy 的 Bash 工具即满足)。
- 渲染后端其一可用:LibreOffice,或 WorkBuddy 的 slidep + 在线编辑器服务。
- Python 3 +
img2pdf(仅 slidep 后端需要;脚本自动pip install)。
用法
bash "<skill_dir>/convert.sh" "路径/到/文件.pptx"
# 指定输出路径:
bash "<skill_dir>/convert.sh" "路径/到/文件.pptx" "输出/文件.pdf"
- 默认输出:与 pptx 同目录、同名、
.pdf后缀。 <skill_dir>为本技能所在目录(含convert.sh)。- 页数多时渲染较慢(如 36 页约 3–4 分钟),建议用后台任务执行并等待完成,不要中途打断。
执行流程(脚本已自动化)
- 探测渲染后端(LibreOffice → slidep)。
- LibreOffice:直接
--headless --convert-to pdf。 - slidep:校验编辑器服务在线 →
slidep inspect取总页数 → 逐页slidep screenshot渲染 PNG →img2pdf无损合成。 - 清理临时文件。
稳定性与过审说明
- 无密钥、无写死绝对路径、无第三方账号依赖;slidep 为 WorkBuddy 内置工具。
- 所有失败路径都有明确中文报错与可操作指引,不会静默失败。
- 服务离线、文件缺失、后端缺失都会在执行前被拦下并给出原因。