使用 comtypes.client 将 .pptx 文件转换为 .pdf 时出错
Error using comtypes.client to convert a .pptx file into .pdf
我正在尝试将 .pptx 文件转换为 pdf 文件。到目前为止我得到了:
PP_FORMAT_PDF = 32
def _convert_powerpoint2pdf(input_path, output_path):
try:
import comtypes
import comtypes.client
except ImportError as error:
raise
else:
powerpoint = slides = None
try:
comtypes.CoInitialize()
powerpoint = comtypes.client.CreateObject('Powerpoint.Application')
slides = powerpoint.Presentations.Open(input_path)
slides.SaveAs(output_path, FileFormat=PP_FORMAT_PDF)
except WindowsError as error:
raise
except comtypes.COMError as error:
raise IOError(error)
finally:
slides and slides.Close()
powerpoint and powerpoint.Quit()
comtypes.CoUninitialize()
错误:
Traceback (most recent call last):
File "C:/Users/Mathias/git/pdfconv/tests\test_converter.py", line 89, in test_convert_presentation2pdf_pptx
pdfconv.converter.convert_presentation2pdf(input_path, output_path)
File "c:\users\mathias\git\pdfconv\pdfconv\converter.py", line 116, in convert_presentation2pdf
_convert_powerpoint2pdf(input_path, output_path)
File "c:\users\mathias\git\pdfconv\pdfconv\converter.py", line 179, in _convert_powerpoint2pdf
slides.SaveAs(output_path, FileFormat=PP_FORMAT_PDF)
_ctypes.COMError: (-2147467259, 'Unbekannter Fehler', (u'Presentation (unknown member) : PowerPoint kann ^0 auf ^1 nicht speichern.', u'Microsoft PowerPoint 2013', u'', 0, None))
几乎相同的代码在 Word 和 Excel 上工作得非常好。有谁知道我做错了什么?
考虑此解决方案,详见此处:。
上述资源的解决方案(今天对我有用)是:
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 文件转换为 pdf 文件。到目前为止我得到了:
PP_FORMAT_PDF = 32
def _convert_powerpoint2pdf(input_path, output_path):
try:
import comtypes
import comtypes.client
except ImportError as error:
raise
else:
powerpoint = slides = None
try:
comtypes.CoInitialize()
powerpoint = comtypes.client.CreateObject('Powerpoint.Application')
slides = powerpoint.Presentations.Open(input_path)
slides.SaveAs(output_path, FileFormat=PP_FORMAT_PDF)
except WindowsError as error:
raise
except comtypes.COMError as error:
raise IOError(error)
finally:
slides and slides.Close()
powerpoint and powerpoint.Quit()
comtypes.CoUninitialize()
错误:
Traceback (most recent call last):
File "C:/Users/Mathias/git/pdfconv/tests\test_converter.py", line 89, in test_convert_presentation2pdf_pptx
pdfconv.converter.convert_presentation2pdf(input_path, output_path)
File "c:\users\mathias\git\pdfconv\pdfconv\converter.py", line 116, in convert_presentation2pdf
_convert_powerpoint2pdf(input_path, output_path)
File "c:\users\mathias\git\pdfconv\pdfconv\converter.py", line 179, in _convert_powerpoint2pdf
slides.SaveAs(output_path, FileFormat=PP_FORMAT_PDF)
_ctypes.COMError: (-2147467259, 'Unbekannter Fehler', (u'Presentation (unknown member) : PowerPoint kann ^0 auf ^1 nicht speichern.', u'Microsoft PowerPoint 2013', u'', 0, None))
几乎相同的代码在 Word 和 Excel 上工作得非常好。有谁知道我做错了什么?
考虑此解决方案,详见此处:
上述资源的解决方案(今天对我有用)是:
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()