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文件夹。
  • 如果不想要移动的功能,可以注释掉processDirmoveSingle的调用。
  • 因为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文件夹中相关推荐

  1. Python读取PPT,PPT PPTX PPTM PPS PPSM PPSX

    语言:python3 windows环境方法 import json from win32com import client as wcdef Read_PPTX(file): #PPT PPTX P ...

  2. python批量重命名指定目录下所有文件的后缀名

    python批量重命名指定目录下所有文件的后缀名 有个需求,需要把某个文件夹下所有后缀名为.abc的更改为.xyz; #批量重命名指定目录下面所有文件的后缀名. word_dir为需要更改后缀的文件夹 ...

  3. 使用shell遍历文件夹下的所有图片,并复制一定数量的到新建的子文件夹中

    使用shell遍历一个文件夹下的图片,并复制一定数量的到新建的子文件夹下 大量数据存在同一个文件夹中,想要提取部分使用时直接cp无法准确的控制数量,且将复制的图片又一股脑儿存放在同一新文件夹下仿佛不太 ...

  4. 记录一下 Java 代码实现文件夹、文件的对比,主要包含 word、pdf、文本、图片等相关文件的对比计算,以及计算文本的相似率(重复率)、筛选出差异的文件、方便文件和文档的去重,并封装为jar包

    记录一下 Java 代码实现文件夹.文件的对比,主要包含 word.pdf.文本.图片等相关文件的对比计算,以及计算文本的相似率(重复率).筛选出差异的文件.方便文件和文档的去重,并把所有的源码封装为 ...

  5. Qt下使用QAxObject进行Word转换为PDF出现错误 error: undefined reference to `QAxObject::QAxObject(QObject*)‘

    Qt下使用QAxObject进行Word转换为PDF出现错误 error: undefined reference to `QAxObject::QAxObject(QObject*)' 首先检查以下 ...

  6. Office系列---将Office文件(Word、PPT、Excel)转换为PDF文件,提取Office文件(Word、PPT)中的所有图片

    将Office文件转换为PDF文件,提取Office文件中的所有图片 1.Office系列---将Office文件(Word.PPT.Excel)转换为PDF文件 1.1 基于Office实现的解决方 ...

  7. 如何用虚拟打印机将其他文件(word,excel,ppt等)转换为PDF

    如何用虚拟打印机将其他文件(word,excel,ppt等)转换为PDF 将其他文件(word,excel,ppt等)转换为PDF(以word为例) 1.用相应软件(如word)打开需要进行转换的文档 ...

  8. python遍历一个文件夹下所有excel,读取所有sheet页,然后写入另一个文件夹下对应模板的excel中

    本来想直接写入,但是我们的excel报表太麻烦了,里面表头有多处要求合并的,用python去写太要命了,想了下,设置一堆空的excel模板,这样只需要把原文件的数据读出来就可以了,简单多了 #读取文件 ...

  9. ubuntu下使用python将ppt转成图片_在Ubuntu下,python将PPT和word转换为PDF,ubuntu,pptword,pdf...

    前言: 在我以前的博客中有这么两篇博客,一篇是: python将ppt文件转换为jpg图片 . 这两篇博客都是讲如何将word,ppt转换为图片,但是这些方法都是在win系统中实现的,而在ubuntu ...

最新文章

  1. 8.4 有监督学习与异常检测-机器学习笔记-斯坦福吴恩达教授
  2. 八十五、Python | Leetcode数据结构之图和动态规划算法系列
  3. Android JNI_OnLoad()函数
  4. linux用的那国语言,在linux上可以使用什么变成语言
  5. win32 socket的一个简单的例子 控制台
  6. xx是一个类型 这在给定的上下文_BERT, ELMo, amp; GPT-2: 这些上下文相关的表示到底有多上下文化?...
  7. 关于window对象
  8. android 中radiogroup滑动切换,巧妙实现缺角radiogroup控制多个fragment切换和滑动
  9. C/C++ OpenCV直方图均衡化
  10. [BZOJ1026]windy数
  11. ffmpeg获取设备支持的分辨率_Qt音视频开发6-ffmpeg解码处理
  12. django 视图模式
  13. C语言基础专题 - 通过案例历学 - 结构体
  14. java 容易犯错_写Java程序最容易犯错误有哪些呢?
  15. zend framework 重定向方法(render, forward, redirect)总结
  16. 【操作系统】Nachos 多道程序设计
  17. “本人成分” 如何填写
  18. 实习总结第七谈-----------vue中element-ui的表格行高怎么控制
  19. 阿里入局,通义千问备受期待
  20. 基于STM32设计的遥控小车(手机APP+GPS+温湿度+ESP8266)

热门文章

  1. 多任务让你走得更慢(很好,转自infoq)
  2. cas虚拟服务器,适用于CAS虚拟化平台的CloudOS3.0云主机镜像的制作
  3. 超级电容充放电时间计算
  4. 不要浮躁,获得充实感
  5. 禅道配置smtp发信没反应
  6. OpenCV图像处理---模糊原理
  7. [附源码]java毕业设计校园征兵及退役复原管理系统
  8. DualVD:借鉴认知双向编码理论,提出视觉对话新框架 | AAAI 2020
  9. creo2.0+VS2010采用protoolkit二次开发环境配置(64位win7)
  10. 视频去水印在线网站?