批量替换PPT中的颜色
最近一直在忙安卓的事情,感觉博客就要荒废掉了一样。
趁着有一点点空的时间把之前的一些idea都记录下来。
这个idea来源于PPT的浏览和打印。
有些PPT非常的“直男设计”,配色异常奇葩。
好比说黄色字白色底,黑色底棕色字,灰常不利于阅读。
那怎么办呢?第一时间想到的就是在Powerpoint上批量换色。
但是问题来了,Powerpoint似乎是没有选择全部“对象”的功能的。
上百页的PPT,这么多的文本框,怎么搞啊。
这时我就想到了 .pptx
是一个Zip
压缩文件,用XML
描述一个PPT。
讲道理,
可以对PPT里面的每一页里面的颜色的节点做一个字符串的替换,
这样就可以实现批量换色了。
那就动手吧~
基础装备
你需要一个压缩和解压 Zip
的工具,我选择 BandiZip
。
你还需要一个脚本语言,我选择无敌的 Node.js
。
当然,最关键的是需要一个Powerpoint,至少也要2007以后的吧。
开始动手
保存 .pptx
首先,我们需要把PPT另存为为 .pptx
格式的,
因为 .ppt
不是用 XML
描述一个PPT的。
如果本来就是
.pptx
那就无视上面那一步。
确认要替换的颜色的RGB值
第二,我们确认一下需要替换的颜色和替换到什么颜色。
这个需要我们在Powerpoint中选中有目标颜色的文本,
在“字体颜色”那儿选择“其他颜色”,
弹出的框框选自定义就可以看到颜色的RGB值了。
在这里颜色是红绿蓝的RGB的十进制数。
所以你会看到类似“红色 255 绿色 128 蓝色 0”这样的东西。
但是我们得转化成十六进制的RGB颜色值呀~
所以下面我提供了一个小函数方便大家转换(用控制台即可使用):
1 | function toRGBCode(r, g, b){ |
直接调用 toRGBCode
这个函数,分别传入红色、蓝色、绿色的值即可。
如:toRGBCode(255, 0, 0)
会输出 "#ff0000"
提取每一页的XML
使用解压工具把你要搞的 XXXX.pptx
解压了,
找到 ppt/slides
这个文件夹,
把整个文件夹解压出来,
这个就是每一页的PPT的 XML
文件。
解压完毕之后,请看一下最后一个文件的需要是多少。
好比说,slide27.xml
是序号最大的文件,就说明这个PPT有 27 页。
好啦,记下来多少页之后就可以上脚本了。
1 | const fs = require('fs'); |
记得看一下脚本的注释,把该修改的地方都给改了。
好比说页码、Slides文件夹路径、需要替换的颜色和目标颜色,一定一定要改!!
脚本保存后运行一下就可以啦~
打包回去
还是用 BandiZip
,我们把刚刚处理完的Slides文件夹整个压缩回去。
用 BandiZip
打开 .pptx
文件后,用“添加”功能就可以啦~
Ok! 赶紧打开 Powerpoint 看一下效果吧!
除非注明,麦麦小家文章均为原创,转载请以链接形式标明本文地址。