日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

【Python】comtypes模块Windows环境下使用批量转换成PDF文件

發(fā)布時(shí)間:2025/3/15 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】comtypes模块Windows环境下使用批量转换成PDF文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在微信看到一篇文章介紹說(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)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。