彬少
Blog
受不了了!我给自己写了个PPT插件

受不了了!我给自己写了个PPT插件

PPTBZBS插件工具开发

大家好,我是彬少。

PPT 爱好者/设计师,「✦BZBS」插件制作者。

我压根不是专业程序员,只是一个被无穷无尽的重复操作搞到崩溃的 PPT 重度用户。这个插件最早是写给我自己偷懒用的,后来一点点打磨,才变成了各位现在看到的东西。

如果你也经常把大量时间耗在"导出、整理、提取素材"这些环节上,希望它能帮你省点力气。

做完 PPT,才是下半场的开始

你有没有过这种体验:

PPT终于搞完了。设计稿敲定了,动画调顺了,字体也查缺补漏过了一遍。你心想这下万事大吉,可以合上电脑走人了。

结果接下去的时间,你全耗在这些事情上:

  • 导出一份 PDF 给甲方
  • 甲方说"万一我这边缺字体怎么办",你又追加了一份图片版 PDF
  • 同事说"把第3页和第7页分别存成独立 PPT 文件",你开始一页页另存
  • 群里喊要预览图,你又去导出 JPG
  • 老板说"拼个长图给我,手机上方便看",你又打开拼图软件
  • 怕对方改动你的内容,还得再存一份图片版 PPT
  • 最后还得把字体文件整理出来,以防对方电脑上没有

等你把这一套全折腾完,一个小时已经过去了。

而在这一个小时里,你干的没有一件是跟内容有关的,全是纯粹的体力活。

还有一个更隐蔽的痛点:如果你跟我一样在 Mac 上用 Parallels 虚拟机跑 Windows 版 PPT,导出来的图片,阴影和渐变常常和屏幕上显示的不一致。往往等发现的时候,东西已经发给客户了。

我在这些烂事上耗了实在太久,终于再也忍不下去了。于是花了大把时间,写了一个专门处理"PPT做完之后那一堆破事"的插件——BZBS。

关于 BZBS,一个插件小白的起点

在聊功能之前,想先说说这东西是怎么来的。这部分说不定比功能本身更有意思。

这个插件一开始没有任何宏大的设想。我就是那个天天泡在 PPT 里的人——不是那种一两张的简单汇报,而是动辄几十页、要反复修改、最后还要输出一堆格式发给不同人的复杂文件。

搞定设计只是第一步。接下来的导出、拆分、打包、提取素材……每一件事都耗我大量时间,而且枯燥到让人抓狂。我总在想:这些事明明全是固定流程,凭什么不能一键搞定?

起初我试着用 PowerPoint 自带的宏写几个简单的 VBA 脚本,比如自动把所有页面导出为图片。但宏的能力实在太有限了,逻辑稍微复杂一点就写不下去。后来发现可以用 VSTO(Visual Studio Tools for Office)来开发真正的插件,能用 C# 写完整的业务逻辑,能直接操作 PPT 的对象模型和底层的 OpenXML 文件结构。

于是,一个几乎没有任何正经软件开发背景的人,走上了漫漫插件开发路。

如果有人也想自己写一个 Office 插件,放在以前我会说:你先把 C# 啃完、搞懂 COM 互操作、学会 Ribbon XML 那一套。但现在真不一样了。我一开始就是靠着 AI 迈出第一步的。

Gemini、豆包、DeepSeek,这几个工具我换着用。让它们帮我理清概念——VSTO 是什么、OpenXML 怎么玩、为什么操作完 Shape 要释放 COM 对象。让它们帮我生成代码框架。很多东西不用从零翻文档,效率确实高了很多。说句实话,要是没有 AI,我大概率连第一步都跨不出去。

但很快我就发现,AI 能让你跑起来,却不能帮你跑得稳。

它能给你一段看起来像模像样的代码,但不知道这段代码在母版视图和普通视图下跑起来行为完全不同。它能帮你写一段合并母版的逻辑,但不知道在某些版本下克隆 Design 会丢背景。它能建议你用剪贴板复制幻灯片,但不知道剪贴板有时候会被别的程序抢走。

那些"阴影怎么没了""这个 DPI 下怎么糊了""合并母版后版式怎么全乱了"之类的问题,AI 能给你一个方向,但最后只能靠人一次次跑流程、抓日志、改代码、再跑流程。这中间没有任何捷径。

也正是这个来回折腾的过程,让我真正体会到:那些我们用着觉得理所当然的 PPT 插件——背后都藏着你没法想象的投入和试错。

Respect!向所有 PPT 插件开发者致敬。

好了,故事先讲到这。我们说回插件本身,它的核心只有三个词:导出、整理、提取。

导出:这个插件最核心的本事

如果 BZBS 只能留一个功能,那毫无疑问是导出。我把最折磨人的导出场景,全部变成了自动化流程。

一键打包:把交付物一次性全部生成

以前我交付一份PPT终稿,流程是这样的:

先出一份标准PDF → 再出一份图片版PDF → 导一套高清JPG → 拼一张长图 → 把字体整理出来 → 删掉隐藏页另存一份定稿版PPT → 把所有文件归拢到一个文件夹 → 压缩 → 发走。

每一步都要手动选路径、等进度条。一套下来,再熟练也得花一二十分钟。

BZBS 做了一个叫 「一键打包」 的功能。你设定好 DPI,点一下,它自动在目标文件夹里创建这些内容:

  • 原始备份文件
  • 定稿源文件(自动删除隐藏页)
  • 原生矢量 PDF
  • 图片版 PDF(96 DPI + 300 DPI 各一份)
  • 高清图片集 + 预览图片集
  • 长图拼接预览(封面、封底独立放大,正文拼成多列)
  • 图片版 PPT(96 DPI + 300 DPI,不可编辑版本)
  • 使用到的字体文件

导出图片:想多高清就多高清

支持从 72dpi 一直到 2400dpi,可手动填任意数值,也可以用预设挡位。格式可选 JPG 或 PNG,范围可选全部页面、仅选中页,是否包含隐藏页也能控制。

导出 PDF:原生矢量 + 纯图防篡改

  • 原生矢量模式:文字可选中、可搜索,适合正式交付
  • 纯图模式:内容完全不可复制,字体不会缺失,版式绝对不乱

导出长图:整份PPT拼成一张信息图

支持自定义列数、四周留白、图片间距、封面/封底独立模式、画布背景色。实时预览,所见即所得。

批量工厂:同时处理一堆 PPT

提供五个批量工具:批量导出单页、批量导出图片、批量导出 PDF、批量图片版 PPT、批量合并。

整理:让PPT从毛坯变成精装

专属功能:六个高频帮手

  • 收藏字体 — 收藏常用字体,侧边栏一键套用
  • 智能缩放 — 选中对象拖动滑块等比缩放,字号/边距/描边联动
  • 快捷缩放 — 输入倍数快速连击缩放
  • 页图置顶 — 当前页渲染为高清截图置顶保护
  • 页面撑高 — 修复滚动浏览跳页 Bug
  • 块块连线 — 选中形状一键生成连接线

一键规整

清理多余母版、统一文本框样式、设置默认形状、重置格式——把乱七八糟的文档一键规整。

排版工具

统一大小、填充画面、原位复制、间距标尺等高频操作快捷键。

提取:把PPT当素材库来挖

BZBS 直接读取 OpenXML 结构,把原始图片文件原样取出来,不经任何二次压缩。视频和音频文件同理。

  • 普通点击:提取选中元素
  • Ctrl+点击:提取整份文档全部素材
  • Alt+点击:智能模式,有选中就提取元素,没选中就提取全部

打包字体:扫描文档实际用到的字体,自动匹配中英文名称差异,复制出来打包带走。

一些让插件更好用的设计

  • 修饰键逻辑:Ctrl/Shift/Alt 每种按键对应不同操作模式
  • 导出路径预设:每个功能可单独指定默认路径,Alt+点击直接静默导出
  • 虚拟机的提醒:涉及图片渲染时会提醒虚拟机环境可能存在的渲染差异

这个插件从第一天起就没打算藏着掖着。东西做出来了,自己用得顺手,就觉得该拿出来分享,让更多被 PPT 善后折磨的人少走弯路、少熬点夜。

写在最后

这个插件现在有二十多个功能,但有一个大模块我一直没放进去:智能修边。逻辑早就写好了,但一直调不到满意的状态。没调到位的东西,宁可按着不发,也别凑合上。

这个插件要做的事一直很明确:不管 PPT 是怎么做出来的,只管做完之后的那一堆事。导出、整理、提取,全部自动化。

BZBS 插件已开放下载。关注公众号「宝藏彬少」,回复「PPT插件」获取最新版本和安装指南。


本文同步发布在微信公众号「宝藏彬少」。 ← 阅读公众号原文

Command Palette

Search for a command to run...