【Python】comtypes模块Windows环境下使用批量转换成PDF文件
最近在微信看到一篇文章介紹說批量將ppt文件轉化為pdf文件,自己嘗試了一下,后面想能否自己封裝一個類,既能將ppt轉換為pdf,而且能夠將word轉換為pdf,或者其他類型轉化為pdf?;税胩鞎r間研究和找資料,終于完成了。
本人是在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文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx的平滑升级记录---适用于编译
- 下一篇: 【转】深入理解JavaScript闭包(