Pythonスクリプトを使用して.pptxファイルを.pdfファイルに変換することを数時間探していましたが、何も機能していないようです。
私が試したこと:私は1) このスクリプト これはwindows32.clientを呼び出し、2) noconv ですが、どれも私のために働いていないようです。
発生した問題:最初のオプションからスクリプトを使用するとエラー(com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024894), None)
)がスローされますが、2番目のオプションではPython pipを使用してインストールした後でも、unoconv
を認識できないようです。
また、推奨される Pandoc もいくつか見ましたが、Pythonでの使用方法がわかりません。
使用しているバージョン:Python 2.7.9、Windows 8.1
comtypes
はWindowsでのみ使用可能であることに注意してください。他のプラットフォームはこれをサポートしません。
import comtypes.client
def PPTtoPDF(inputFileName, outputFileName, formatType = 32):
PowerPoint = comtypes.client.CreateObject("PowerPoint.Application")
PowerPoint.Visible = 1
if outputFileName[-3:] != 'pdf':
outputFileName = outputFileName + ".pdf"
deck = PowerPoint.Presentations.Open(inputFileName)
deck.SaveAs(outputFileName, formatType) # formatType = 32 for ppt to pdf
deck.Close()
PowerPoint.Quit()
私はこのソリューションで作業していましたが、すべての.pptx、.pptを検索してから、それらをすべて.pdf(python 3.7.5)に変換する必要がありました。それがうまくいくことを願っています...
import os
import win32com.client
ppttoPDF = 32
for root, dirs, files in os.walk(r'your directory here'):
for f in files:
if f.endswith(".pptx"):
try:
print(f)
in_file=os.path.join(root,f)
PowerPoint = win32com.client.Dispatch("PowerPoint.Application")
deck = PowerPoint.Presentations.Open(in_file)
deck.SaveAs(os.path.join(root,f[:-5]), ppttoPDF) # formatType = 32 for ppt to pdf
deck.Close()
PowerPoint.Quit()
print('done')
os.remove(os.path.join(root,f))
pass
except:
print('could not open')
# os.remove(os.path.join(root,f))
Elif f.endswith(".ppt"):
try:
print(f)
in_file=os.path.join(root,f)
PowerPoint = win32com.client.Dispatch("PowerPoint.Application")
deck = PowerPoint.Presentations.Open(in_file)
deck.SaveAs(os.path.join(root,f[:-4]), ppttoPDF) # formatType = 32 for ppt to pdf
deck.Close()
PowerPoint.Quit()
print('done')
os.remove(os.path.join(root,f))
pass
except:
print('could not open')
# os.remove(os.path.join(root,f))
else:
pass
試してみたのは、私が読むことができず、最後のドキュメントまでコードを終了しないドキュメントを除いたものでした。そして、私は、最初に.pptx、次に.ppt(またはその逆)の各タイプのフォーマットを脇に置くことをお勧めします。
comtypes
が機能しなくなったため、回答を更新する必要があると思います。
したがって、これは機能するコードです(受け入れられた回答の更新バージョン):
import win32com.client
def PPTtoPDF(inputFileName, outputFileName, formatType = 32):
PowerPoint = win32com.client.DispatchEx("PowerPoint.Application")
PowerPoint.Visible = 1
if outputFileName[-3:] != 'pdf':
outputFileName = outputFileName + ".pdf"
deck = PowerPoint.Presentations.Open(inputFileName)
deck.SaveAs(outputFileName, formatType) # formatType = 32 for ppt to pdf
deck.Close()
PowerPoint.Quit()
noconv はこのタスクを実行するための優れたツールであり、実際にPythonでビルドされています。あなたの問題に関しては、インストール後にメインのunoconvファイルにpythonインタプリタが設定される方法で、繰り返し発生する問題に関連している可能性があります。
Python3インタープリターで実行するには、unoconvファイル(#!/usr/bin/env python
)の#!/usr/bin/env python3
を#!/usr/bin/python3
または/usr/bin/unoconv
に置き換えます。
一発ギャグ:
Sudo sed -i -e '1s:#!/usr/bin/env python$:#!/usr/bin/env python3:' /usr/bin/unoconv
/usr/bin/unoconv
を/usr/local/bin/unoconv
にシンボリックリンクすることもできます。