【Python】comtypes模块Windows环境下使用批量转换成PDF文件
最近在微信看到一篇文章介绍说批量将ppt文件转化为pdf文件,自己尝试了一下,后面想能否自己封装一个类,既能将ppt转换为pdf,而且能够将word转换为pdf,或者其他类型转化为pdf。花了半天时间研究和找资料,终于完成了。
本人是在windows 10 、python3.6虚拟环境下完成的, 以下是具体内容:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:pdfConverter.py
#日期:2018-04-22
#备注:通过调用Python访问COM对象的comtypes包,批量将ppt或者word转换为PDF文件,先要在python环境安装comtypes
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# F:\python_env\PaChong_env
# -*- coding: utf-8 -*-from comtypes.client import CreateObject
import osclass pdfConverter:def __init__(self):#word文档转化为pdf文档时使用的格式为17self.wdFormatPDF = 17self.wdToPDF = CreateObject("Word.Application")#ppt文档转化为pdf文档时使用的格式为32self.pptFormatPDF = 32self.pptToPDF = CreateObject("Powerpoint.Application")self.pptToPDF.Visible = 1def wd_to_pdf(self, folder):#获取指定目录下面的所有文件files = os.listdir(folder)#获取word类型的文件放到一个列表里面wdfiles = [f for f in files if f.endswith((".doc", ".docx"))]for wdfile in wdfiles:#将word文件放到指定的路径下面wdPath = os.path.join(folder, wdfile)#设置将要存放pdf文件的路径pdfPath = wdPath#判断是否已经存在对应的pdf文件,如果不存在就加入到存放pdf的路径内if pdfPath[-3:] != 'pdf':pdfPath = pdfPath + ".pdf"#将word文档转化为pdf文件,先打开word所在路径文件,然后在处理后保存pdf文件,最后关闭pdfCreate = self.wdToPDF.Documents.Open(wdPath)pdfCreate.SaveAs(pdfPath, self.wdFormatPDF)pdfCreate.Close()def ppt_to_pdf(self, folder):files = os.listdir(folder)pptfiles = [f for f in files if f.endswith((".ppt", ".pptx"))]for pptfile in pptfiles:pptPath = os.path.join(folder, pptfile)pdfPath = pptPathif pdfPath[-3:] != 'pdf':pdfPath = pdfPath + ".pdf"pdfCreate = self.pptToPDF.Presentations.Open(pptPath)pdfCreate.SaveAs(pdfPath, self.pptFormatPDF)pdfCreate.Close()if __name__ == "__main__":converter = pdfConverter()converter.ppt_to_pdf("F:\PythonProject\Pacong\ppt")converter.wd_to_pdf("F:\PythonProject\Pacong\ppt")
以后如果还想将其他类型的文件转换为pdf,可以在这个类中创建新的函数。在写这个类时遇到几个问题,大家也可能会遇到:
1. 刚开始运行时一直报错“Presentations.Open(pptPath)AttributeError: 'POINTER(IUnknown)' object has no attribute 'Presentations'”,找了好久才找到说好像是权限问题,需要在组件服务的DCOM配置进行处理。
2. word文档转换时的函数是:Documents.Open(),ppt转换时是:Presentations.Open()
3. 文件转换时有一个参数formatype,不同转换类型不一样:wdFormatPDF = 17,pptFormatPDF = 32
4. ppt转换时需要进行处理:pptToPDF.Visible = 1,word好像不需要
5. 这个转换用到了一个Python访问COM对象的comtypes包,可以通过pip直接安装
pip3 install comtypes
【Python】comtypes模块Windows环境下使用批量转换成PDF文件相关推荐
- CAD怎么转换成PDF?如何将CAD批量转换成PDF?
CAD文件是设计行业常常需要使用的图纸之一,我们在使用CAD图纸文件时,有时候需要将CAD图纸文件转换成PDF,那么CAD怎么转换成PDF?如何将CAD批量转换成PDF?通过这篇文章,我就来告诉大家应 ...
- 廖雪峰python教程书-Python 爬虫:把廖雪峰的教程转换成 PDF 电子书
写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...
- python基础教程廖雪峰云-Python 爬虫:把廖雪峰的教程转换成 PDF 电子书
写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...
- 如何将ppt批量转换成pdf?
如何将ppt批量转换成pdf?相信每个上班族都一样,工作时都要使用到很多种办公文件,例如:word.ppt.pdf.txt.图片等,不同格式的文件有着不同的特点以及不同的作用.ppt是工作汇报时最常用 ...
- Python 实现office单个文件或整个文件夹(word,ppt,excel)转换成PDF文件,并获取PDF文件页数
Python 实现office单个文件或整个文件夹(word,ppt,excel)转换成PDF文件,并获取PDF文件页数 文件夹中获取需要转换的文件数,将其全部转换或可单独转换单个文件,并获取转成PD ...
- java实现图片jpg批量转换成pdf
java实现图片jpg批量转换成pdf package jpgTopdf; import java.awt.image.BufferedImage; import java.io.File; impo ...
- Word怎么转换成pdf?Word批量转换成pdf教程
Word文档是我们生活中常见且经常使用的文本格式,在使用Word文档时,多数情况下会涉及到转换的问题,很多人希望将Word转换成PDF文件使用.但对于Word怎么转换成PDF却是众说纷纭的,几乎是每一 ...
- cad如何批量转换成pdf?
cad如何批量转换成pdf,CAD是建筑行业常用的一种文件图纸,用来绘制建筑的规格以及详细参数,以便后期的施工需要,通常绘制好的cad图纸会被发送到各个职能部门或者甲方公司浏览.为了让cad文件更加方 ...
- CAD图纸批量转换成PDF的常用方法
辛辛苦苦画完的CAD图纸,我们经常会需要把它们转换成其他格式的文档,比如PDF.JPG之类的受众比较广泛的格式,这样既方便别人在电脑中打开,又方便自己在手机中进行查看.现在,我就分享两种常用的CAD批 ...
最新文章
- [PYTHON] 核心编程笔记(18.多线程编程)
- UVa OJ 120
- 微信小程序走出国门,国际化将指日可待?
- java链式结构_java语言实现队列顺序结构与链式结构
- 几种开源NOSQL数据库
- js本页导出Excel,下载
- NB-IoT适用于电子门锁通信吗?
- python爬取b站评论_用python 抓取B站视频评论,制作词云
- 高效的SQLSERVER分页查询(推荐)
- scss转换成css,hotcss
- javascript animation lib greensock gsap介绍
- 求模板啊,求软著说明书模板啊
- 如何使诺机亚手机显示中文电话簿
- 毕索大学计算机科学怎么样,毕索大学的计算机硕士如何
- linux c 获取进程p id,详解Linux获取线程的PID(TID、LWP)的几种方式
- 机械螺旋缠绕法管道非开挖修复
- 【微信小程序】企业付款接口
- vscode插件-格式化代码-工具
- 【拦截器】和【过滤器】
- Mac OS X在终端中打开文件夹窗口
热门文章
- python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...
- matlab安装无效距离过远,求助matlab的远程序
- 全国计算机考试真考题库4,全国计算机等级考试无纸化真考题库试卷二级C--(4)资料.docx...
- mysql锿法_MySQL基本用法
- thinkphp三级分销小程序源码_山东谷道微信小程序商城源码带后台 公众号平台三级分销系统...
- php mysql 排名_mysql中如何实现排名
- 微变等效电路法分析放大电路
- (BFS)Prime Path (poj3126)
- java代下订单管理模块_用java语言开发一个订单管理系统
- 织梦编辑器加HTML视频显示很小,织梦去掉编辑器自动加div的方法即大小字情况...