[日常] [Python] 批量将某个文件夹下的.ppt/.pptx/.pptm转换为.pdf文件,并且将其移入/ppt文件夹中
Reference
Python 3 – 批量将PPT转换为PDF_proplume的博客-CSDN博客
前提
- 安装
comtypes
库,需要用其操纵Microsoft PowerPoint.命令行输入
pip install comtypes
即可,或者用conda
. - Python 3.6 or higher,因为其中使用
pprint
来打印。如果低于这一版本,可以删除pprint
的引入,把调用的pprint
换成print
.
使用
- 采用了模仿Python解释器的方式,每次输入一个文件夹路径,然后转换其下所有的
.ppt/.pptx/.pptm
,并且移动到/ppt
文件夹。 - 如果不想要移动的功能,可以注释掉
processDir
中moveSingle
的调用。 - 因为Microsoft PowerPoint本身的限制,一定要显示一个Microsoft PowerPoint的窗体。请不要手动关闭该窗体,否则连续转换和退出时会报错(手动关闭Microsoft PowerPoint和脚本也可以完全退出)。
- 运行该脚本,显示欢迎界面。
- 输入一个路径,回车,将会自动转换。
- 输入下一个路径,将会接着转换。
- 输入
.exit
,程序会自动关闭Microsoft PowerPoint。
代码
import comtypes.client
import os
import shutil
from pprint import pprintclass ppt2pdf:def __init__(self):print("PPT to PDF converter interactive, credit to Lupinus_Linn.")print("The script has to show a Microsoft PowerPoint window due to techique requirement.")print("Input a folder, will convert all ppt/pptx/pptm inside and move it to {workingDir}/ppt folder.")print("When you finished, key in '.exit' to exit.")self.powerpoint = comtypes.client.CreateObject("Powerpoint.Application")self.powerpoint.Visible = 1self.ppt2pdfIndentifer = 32 #Microsoft PowerPoint的SaveAs中,从ppt转pdf的标识符是32self.running = Truedef exec(self):while self.running:self.interpreter()self.exit()def interpreter(self):print(">>> ", end = '')raw = input().strip('"') #从Windows资源管理器Shift + 右键“复制为路径”得到的路径前后有引号if raw == '.exit':self.running = Falsereturnif not os.path.isdir(raw):print("Not a dir, try another.")returnself.workingDir = rawtry:self.processDir()print("All finished.")except Exception as e:print(repr(e))returndef processDir(self):self.workingFiles = list(filter(lambda fname: fname.endswith(('.ppt','.pptx','.pptm',)),os.listdir(self.workingDir)))print("Files in queue")pprint(self.workingFiles)for fname in self.workingFiles:self.convertSingle(fname)print("Converted %s to pdf." % fname)self.moveSingle(fname)print("Moved %s to {workingDir}/ppt folder." % fname)def convertSingle(self, fname : str):originalFullPath = os.path.join(self.workingDir,fname)targetFullPath = os.path.join(self.workingDir,os.path.splitext(fname)[0] + '.pdf')deck = self.powerpoint.Presentations.Open(originalFullPath)deck.SaveAs(targetFullPath, self.ppt2pdfIndentifer)deck.Close()def moveSingle(self, fname : str):pptFolder = os.path.join(self.workingDir,'ppt')#如果move的目标是一个存在的文件夹,就是剪切;否则是改名if os.path.exists(pptFolder):if not os.path.isdir(pptFolder):raise FileExistsError("The ppt folder of working dir has been occupied by a file")else: #文件夹不存在os.mkdir(pptFolder)originalFullPath = os.path.join(self.workingDir,fname)shutil.move(originalFullPath,pptFolder)def exit(self):self.powerpoint.Quit()print("Converter exited.")def main():interpreter = ppt2pdf()interpreter.exec()main()
[日常] [Python] 批量将某个文件夹下的.ppt/.pptx/.pptm转换为.pdf文件,并且将其移入/ppt文件夹中相关推荐
- Python读取PPT,PPT PPTX PPTM PPS PPSM PPSX
语言:python3 windows环境方法 import json from win32com import client as wcdef Read_PPTX(file): #PPT PPTX P ...
- python批量重命名指定目录下所有文件的后缀名
python批量重命名指定目录下所有文件的后缀名 有个需求,需要把某个文件夹下所有后缀名为.abc的更改为.xyz; #批量重命名指定目录下面所有文件的后缀名. word_dir为需要更改后缀的文件夹 ...
- 使用shell遍历文件夹下的所有图片,并复制一定数量的到新建的子文件夹中
使用shell遍历一个文件夹下的图片,并复制一定数量的到新建的子文件夹下 大量数据存在同一个文件夹中,想要提取部分使用时直接cp无法准确的控制数量,且将复制的图片又一股脑儿存放在同一新文件夹下仿佛不太 ...
- 记录一下 Java 代码实现文件夹、文件的对比,主要包含 word、pdf、文本、图片等相关文件的对比计算,以及计算文本的相似率(重复率)、筛选出差异的文件、方便文件和文档的去重,并封装为jar包
记录一下 Java 代码实现文件夹.文件的对比,主要包含 word.pdf.文本.图片等相关文件的对比计算,以及计算文本的相似率(重复率).筛选出差异的文件.方便文件和文档的去重,并把所有的源码封装为 ...
- Qt下使用QAxObject进行Word转换为PDF出现错误 error: undefined reference to `QAxObject::QAxObject(QObject*)‘
Qt下使用QAxObject进行Word转换为PDF出现错误 error: undefined reference to `QAxObject::QAxObject(QObject*)' 首先检查以下 ...
- Office系列---将Office文件(Word、PPT、Excel)转换为PDF文件,提取Office文件(Word、PPT)中的所有图片
将Office文件转换为PDF文件,提取Office文件中的所有图片 1.Office系列---将Office文件(Word.PPT.Excel)转换为PDF文件 1.1 基于Office实现的解决方 ...
- 如何用虚拟打印机将其他文件(word,excel,ppt等)转换为PDF
如何用虚拟打印机将其他文件(word,excel,ppt等)转换为PDF 将其他文件(word,excel,ppt等)转换为PDF(以word为例) 1.用相应软件(如word)打开需要进行转换的文档 ...
- python遍历一个文件夹下所有excel,读取所有sheet页,然后写入另一个文件夹下对应模板的excel中
本来想直接写入,但是我们的excel报表太麻烦了,里面表头有多处要求合并的,用python去写太要命了,想了下,设置一堆空的excel模板,这样只需要把原文件的数据读出来就可以了,简单多了 #读取文件 ...
- ubuntu下使用python将ppt转成图片_在Ubuntu下,python将PPT和word转换为PDF,ubuntu,pptword,pdf...
前言: 在我以前的博客中有这么两篇博客,一篇是: python将ppt文件转换为jpg图片 . 这两篇博客都是讲如何将word,ppt转换为图片,但是这些方法都是在win系统中实现的,而在ubuntu ...
最新文章
- 8.4 有监督学习与异常检测-机器学习笔记-斯坦福吴恩达教授
- 八十五、Python | Leetcode数据结构之图和动态规划算法系列
- Android JNI_OnLoad()函数
- linux用的那国语言,在linux上可以使用什么变成语言
- win32 socket的一个简单的例子 控制台
- xx是一个类型 这在给定的上下文_BERT, ELMo, amp; GPT-2: 这些上下文相关的表示到底有多上下文化?...
- 关于window对象
- android 中radiogroup滑动切换,巧妙实现缺角radiogroup控制多个fragment切换和滑动
- C/C++ OpenCV直方图均衡化
- [BZOJ1026]windy数
- ffmpeg获取设备支持的分辨率_Qt音视频开发6-ffmpeg解码处理
- django 视图模式
- C语言基础专题 - 通过案例历学 - 结构体
- java 容易犯错_写Java程序最容易犯错误有哪些呢?
- zend framework 重定向方法(render, forward, redirect)总结
- 【操作系统】Nachos 多道程序设计
- “本人成分” 如何填写
- 实习总结第七谈-----------vue中element-ui的表格行高怎么控制
- 阿里入局,通义千问备受期待
- 基于STM32设计的遥控小车(手机APP+GPS+温湿度+ESP8266)