“手动在PowerPoint里摆放每一个气泡,再一个个设置动画,简直痛苦。”一位开发者在准备演讲时这样描述自己的抗拒感。那次,他脑子里冒出一个挥之不去的念头:要是在幻灯片上放一部iPhone,屏幕里是LINE聊天界面,消息像真实对话那样一条条弹出来,效果肯定很好。可一想到逐一调整气泡位置、挨个添加进入动画的繁琐流程,他就打起了退堂鼓。于是,这位开发者做了一个小工具——输入一段对话文本,就能直接吐出带有动画效果的.pptx文件。他随后又将这个工具包装成网页应用,部署在Vercel上,让任何人都能快速生成这种动画聊天幻灯片

这条不算复杂的流水线,在实现时却有三个关口实实在在地难住了他:怎么只用python-pptx里最基本的形状拼出逼真的iPhone和LINE风格界面?怎么在python-pptx完全不支持动画的情况下,强行给幻灯片加上逐条消息出现的动效?以及,怎么用一套静态HTML前端搭配Vercel的无服务器函数,把“输入对话、输出PPT”的流程跑通,并在部署中踩过坑后顺利上线。这篇文章正是围绕这三个挑战展开的,记录了他从零搭建小工具的全过程。

打开网易新闻 查看精彩图片

整个项目由几个文件构成,结构意外地精简:一个index.html作为前端,提供输入表单和实时预览;一个api/generate.py负责接收对话的JSON数据,调用核心的build_pptx函数生成PPT文件,并充当Vercel无服务器函数的处理入口;一个requirements.txt声明了唯一的