最近在微信看到一篇文章介绍说批量将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文件相关推荐

  1. CAD怎么转换成PDF?如何将CAD批量转换成PDF?

    CAD文件是设计行业常常需要使用的图纸之一,我们在使用CAD图纸文件时,有时候需要将CAD图纸文件转换成PDF,那么CAD怎么转换成PDF?如何将CAD批量转换成PDF?通过这篇文章,我就来告诉大家应 ...

  2. 廖雪峰python教程书-Python 爬虫:把廖雪峰的教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...

  3. python基础教程廖雪峰云-Python 爬虫:把廖雪峰的教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...

  4. 如何将ppt批量转换成pdf?

    如何将ppt批量转换成pdf?相信每个上班族都一样,工作时都要使用到很多种办公文件,例如:word.ppt.pdf.txt.图片等,不同格式的文件有着不同的特点以及不同的作用.ppt是工作汇报时最常用 ...

  5. Python 实现office单个文件或整个文件夹(word,ppt,excel)转换成PDF文件,并获取PDF文件页数

    Python 实现office单个文件或整个文件夹(word,ppt,excel)转换成PDF文件,并获取PDF文件页数 文件夹中获取需要转换的文件数,将其全部转换或可单独转换单个文件,并获取转成PD ...

  6. java实现图片jpg批量转换成pdf

    java实现图片jpg批量转换成pdf package jpgTopdf; import java.awt.image.BufferedImage; import java.io.File; impo ...

  7. Word怎么转换成pdf?Word批量转换成pdf教程

    Word文档是我们生活中常见且经常使用的文本格式,在使用Word文档时,多数情况下会涉及到转换的问题,很多人希望将Word转换成PDF文件使用.但对于Word怎么转换成PDF却是众说纷纭的,几乎是每一 ...

  8. cad如何批量转换成pdf?

    cad如何批量转换成pdf,CAD是建筑行业常用的一种文件图纸,用来绘制建筑的规格以及详细参数,以便后期的施工需要,通常绘制好的cad图纸会被发送到各个职能部门或者甲方公司浏览.为了让cad文件更加方 ...

  9. CAD图纸批量转换成PDF的常用方法

    辛辛苦苦画完的CAD图纸,我们经常会需要把它们转换成其他格式的文档,比如PDF.JPG之类的受众比较广泛的格式,这样既方便别人在电脑中打开,又方便自己在手机中进行查看.现在,我就分享两种常用的CAD批 ...

最新文章

  1. [PYTHON] 核心编程笔记(18.多线程编程)
  2. UVa OJ 120
  3. 微信小程序走出国门,国际化将指日可待?
  4. java链式结构_java语言实现队列顺序结构与链式结构
  5. 几种开源NOSQL数据库
  6. js本页导出Excel,下载
  7. NB-IoT适用于电子门锁通信吗?
  8. python爬取b站评论_用python 抓取B站视频评论,制作词云
  9. 高效的SQLSERVER分页查询(推荐)
  10. scss转换成css,hotcss
  11. javascript animation lib greensock gsap介绍
  12. 求模板啊,求软著说明书模板啊
  13. 如何使诺机亚手机显示中文电话簿
  14. 毕索大学计算机科学怎么样,毕索大学的计算机硕士如何
  15. linux c 获取进程p id,详解Linux获取线程的PID(TID、LWP)的几种方式
  16. 机械螺旋缠绕法管道非开挖修复
  17. 【微信小程序】企业付款接口
  18. vscode插件-格式化代码-工具
  19. 【拦截器】和【过滤器】
  20. Mac OS X在终端中打开文件夹窗口

热门文章

  1. python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...
  2. matlab安装无效距离过远,求助matlab的远程序
  3. 全国计算机考试真考题库4,全国计算机等级考试无纸化真考题库试卷二级C--(4)资料.docx...
  4. mysql锿法_MySQL基本用法
  5. thinkphp三级分销小程序源码_山东谷道微信小程序商城源码带后台 公众号平台三级分销系统...
  6. php mysql 排名_mysql中如何实现排名
  7. 微变等效电路法分析放大电路
  8. (BFS)Prime Path (poj3126)
  9. java代下订单管理模块_用java语言开发一个订单管理系统
  10. 织梦编辑器加HTML视频显示很小,织梦去掉编辑器自动加div的方法即大小字情况...