把PPT每一頁截圖到公眾號里推送可是個體力活,那就用python腳本去分解ppt,保存每一個為一張圖片好了
需要用到“win32com.client”庫
import win32com.client import os import sys
第一步,定義讀取ppt文件路徑和輸出路徑
path = os.path.abspath(os.path.dirname(sys.argv[0])) #PPT存放路徑 ppt = path + '/' + "test.ppt" #轉換成圖片后存放路徑 filename = path + '/' + '001.jpg'
第二步,ppt路徑和存放路徑傳到轉換方法中執行
def ppt2png(ppt, filename): # 打開PPT程序 ppt_app = win32com.client.Dispatch('PowerPoint.Application') # 打開ppt文件(后台模式) ppt = ppt_app.Presentations.Open(ppt) # 打開的PPT另存為圖片文件。17數字是ppt轉圖片,32數字是ppt轉pdf。 ppt.SaveAs(filename, 17) print("導出成png格式成功!!!") # 退出PPT程序 ppt_app.Quit() ppt2png(ppt, filename)
其實,就是這么簡單。執行后,會在腳本和目錄下創建一個文件夾,里面存放ppt每一頁的圖片文件
當然,也可以轉成pdf文件,把第二步的“ppt.SaveAs”后括號內數字改成32,同時把第一步“filename”后的后綴由jpg改成pdf即可,生成上左圖pdf文件
這里有個疑問,“filename”的后綴如果是jpg或者png,會創建一個文件夾,把圖片存文件夾內,但是如果是pdf則只會在目錄下生成一個pdf文件,沒搞明白為何
當然,如果不想更改ppt文件名稱,實現拖到腳本目錄下即可轉換,那就加上獲取文件內所有文件信息,同時通過匹配后綴名的方式識別ppt文件轉換
#獲取默認目錄下所有文件 filenames = os.listdir(path) #循環讀取文件名稱 for ppt in filenames: #判斷文件名稱,篩選出后綴名為ppt或者pptx的文件 if ppt.endswith('ppt') or ppt.endswith('pptx'): #將獲取的文件名字進行分割,提取出文件名,比如1024.ppt,按照下面的規則base=1024,ext=ppt base, ext = ppt.split('.') #轉換成圖片后存放路徑 filename = path + '/' + base + '.jpg' #識別出ppt文件后,拼接成ppt文件存放路徑 ppt = path + '/' + ppt else: continue
以上,實現文首預期效果,附全部代碼
import win32com.client import os import sys path = os.path.abspath(os.path.dirname(sys.argv[0])) #獲取默認目錄下所有文件 filenames = os.listdir(path) def ppt2png(ppt, filename): # 打開PPT程序 ppt_app = win32com.client.Dispatch('PowerPoint.Application') # 打開ppt文件(后台模式) ppt = ppt_app.Presentations.Open(ppt) # 打開的PPT另存為圖片文件。17數字是ppt轉圖片,32數字是ppt轉pdf。 ppt.SaveAs(filename, 17) print("轉換成功!!!") # 退出PPT程序 ppt_app.Quit() #循環讀取文件名稱 for ppt in filenames: #判斷文件名稱,篩選出后綴名為ppt或者pptx的文件 if ppt.endswith('ppt') or ppt.endswith('pptx'): #將獲取的文件名字進行分割,提取出文件名,比如1024.ppt,按照下面的規則base=1024,ext=ppt base, ext = ppt.split('.') #轉換成圖片后存放路徑 filename = path + '/' + base + '.jpg' #識別出ppt文件后,拼接成ppt文件存放路徑 ppt = path + '/' + ppt #執行ppt2png方法,轉換ppt ppt2png(ppt, filename) else: continue
“win32com.client”的使用參考:https://blog.csdn.net/qq_28304687/article/details/80721653