【Python】comtypes模块Windows环境下使用批量转换成PDF文件
最近在微信看到一篇文章介紹說(shuō)批量將ppt文件轉(zhuǎn)化為pdf文件,自己嘗試了一下,后面想能否自己封裝一個(gè)類,既能將ppt轉(zhuǎn)換為pdf,而且能夠?qū)ord轉(zhuǎn)換為pdf,或者其他類型轉(zhuǎn)化為pdf。花了半天時(shí)間研究和找資料,終于完成了。
本人是在windows 10 、python3.6虛擬環(huán)境下完成的, 以下是具體內(nèi)容:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #作者:cacho_37967865 #博客:https://blog.csdn.net/sinat_37967865 #文件:pdfConverter.py #日期:2018-04-22 #備注:通過(guò)調(diào)用Python訪問(wèn)COM對(duì)象的comtypes包,批量將ppt或者word轉(zhuǎn)換為PDF文件,先要在python環(huán)境安裝comtypes ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # F:\python_env\PaChong_env # -*- coding: utf-8 -*-from comtypes.client import CreateObject import osclass pdfConverter:def __init__(self):#word文檔轉(zhuǎn)化為pdf文檔時(shí)使用的格式為17self.wdFormatPDF = 17self.wdToPDF = CreateObject("Word.Application")#ppt文檔轉(zhuǎn)化為pdf文檔時(shí)使用的格式為32self.pptFormatPDF = 32self.pptToPDF = CreateObject("Powerpoint.Application")self.pptToPDF.Visible = 1def wd_to_pdf(self, folder):#獲取指定目錄下面的所有文件files = os.listdir(folder)#獲取word類型的文件放到一個(gè)列表里面wdfiles = [f for f in files if f.endswith((".doc", ".docx"))]for wdfile in wdfiles:#將word文件放到指定的路徑下面wdPath = os.path.join(folder, wdfile)#設(shè)置將要存放pdf文件的路徑pdfPath = wdPath#判斷是否已經(jīng)存在對(duì)應(yīng)的pdf文件,如果不存在就加入到存放pdf的路徑內(nèi)if pdfPath[-3:] != 'pdf':pdfPath = pdfPath + ".pdf"#將word文檔轉(zhuǎn)化為pdf文件,先打開word所在路徑文件,然后在處理后保存pdf文件,最后關(guān)閉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")以后如果還想將其他類型的文件轉(zhuǎn)換為pdf,可以在這個(gè)類中創(chuàng)建新的函數(shù)。在寫這個(gè)類時(shí)遇到幾個(gè)問(wèn)題,大家也可能會(huì)遇到:
1. 剛開始運(yùn)行時(shí)一直報(bào)錯(cuò)“Presentations.Open(pptPath)AttributeError: 'POINTER(IUnknown)' object has no attribute 'Presentations'”,找了好久才找到說(shuō)好像是權(quán)限問(wèn)題,需要在組件服務(wù)的DCOM配置進(jìn)行處理。
2. word文檔轉(zhuǎn)換時(shí)的函數(shù)是:Documents.Open(),ppt轉(zhuǎn)換時(shí)是:Presentations.Open()
3. 文件轉(zhuǎn)換時(shí)有一個(gè)參數(shù)formatype,不同轉(zhuǎn)換類型不一樣:wdFormatPDF = 17,pptFormatPDF = 32
4. ppt轉(zhuǎn)換時(shí)需要進(jìn)行處理:pptToPDF.Visible = 1,word好像不需要
5. 這個(gè)轉(zhuǎn)換用到了一個(gè)Python訪問(wèn)COM對(duì)象的comtypes包,可以通過(guò)pip直接安裝
pip3 install comtypes?
總結(jié)
以上是生活随笔為你收集整理的【Python】comtypes模块Windows环境下使用批量转换成PDF文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Nginx的平滑升级记录---适用于编译
- 下一篇: java信息管理系统总结_java实现科