iT邦幫忙

1

python pptx模組問題

不明 2021-08-23 22:32:461686 瀏覽
  • 分享至 

  • xImage

近來有需要大量將副檔名為ppt檔轉換為pptx檔的需求,
查到stack overflow的問答- Convert ppt file to pptx in Python
範例如下:

import win32com.client
App = win32com.client.Dispatch("Powerpoint.Application")
App.Visible = True
PPtPresentation = App.Presentations.Open('./test.ppt')
PPtPresentation.SaveAs('./test.pptx')
PPtPresentation.close()
App.Quit()
print('Program End')

這段程式在轉換普通的ppt檔沒有問題,
然而若是碰到加密過的ppt檔(加密方法: PowerPoint 簡報的密碼保護),
程式會卡住停在那邊,Office則會跳出一個視窗說「請輸入ppt的密碼」,
程式也不會報錯,
需要手動將ppt的視窗關掉程式才會繼續往下走。

能否讓程式跳過加密過的ppt檔不要處理呢?

嘗試解法- 包try-except

一般來說,python的例外處理為try-except,
但我嘗試直接用try-except是無效的,
因此程式會停在那邊而不會報錯,直到手動將ppt的視窗關掉

import win32com.client
try:
    App = win32com.client.Dispatch("Powerpoint.Application")
    App.Visible = True
    PPtPresentation = App.Presentations.Open('./test.ppt')
    PPtPresentation.SaveAs('./test.pptx')
    PPtPresentation.close()
    App.Quit()
except Exception as e:
    print(e)
print('Program End')

目前我嘗試google許久,仍找不到有效的解法

其它可能的方向

目前有朝幾個方向去思考,但目前苦於找不到資料:

  1. 是否有可能用python判斷ppt檔有沒有被加密,以避免開啟加密檔讓程式hang住?
  2. 是否有可能在開啟ppt檔一段時間後,發現久未回應則自動關閉ppt檔?
  3. 是否有其它模組能做ppt to pptx的轉檔,以繞過直接用Office開檔的行為?
https://pypi.org/project/msoffcrypto-tool/
這裡有提到
Test if the file is encrypted or not (exit code 0 or 1 is returned):

msoffcrypto-tool document.doc --test -v

-------
也許可以試試看
froce iT邦大師 1 級 ‧ 2021-08-24 08:01:11 檢舉
或是加個expired time...
不明 檢舉
謝謝屠豬士大大的分享,你分享的模組十分有幫助,恰能解決我的問題,你可以於回答區回答,我會樂於給最佳解答
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2021-08-24 09:40:33
最佳解答

這篇說OK
不妨試試看

不明 檢舉

感謝分享

0
japhenchen
iT邦超人 1 級 ‧ 2021-08-24 12:38:00

.........重覆回答,幫刪..

不明 檢舉

版主好像也沒有刪除功能耶

回應人也沒辦法自刪,只能塗牛賽

我要發表回答

立即登入回答