#python #powershell #pdf #powerpoint
Вопрос:
У меня возникли проблемы с выполнением части python (преобразование PPTx в PDF либо с помощью win32com, либо с помощью comtypes).:
obj = win32com.client.Dispatch('Powerpoint.Application')
obj.Visible = 1
doc = obj.Presentations.Open(file_name_ptx)
doc.SaveAs(file_name_pdf, FileFormat=32)
Python отлично работает, если я запускаю его из CMD или даже в sublime или эквивалентном. Это также работает, если я запускаю его через запланированную задачу окна.
Однако он завершается неудачно, если он запускается через другой скрипт, например, из другого подпроцессорного python (либо с помощью POpen, либо с помощью Run) или из php (с помощью cmd_exe).
Он также завершается неудачно, если этот сценарий выполняется через «удаленный» запрос (с другого компьютера).
Сбой всегда происходит в одном и том же месте, скрипт не может открыть приложение PPTx:
Traceback (most recent call last):
File "C:ProgramDataAnaconda3libsite-packageswin32comclientdynamic.py", line 81, in _GetGoodDispatch
IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221021, 'Operacixf3n no disponible', None, None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "*******.PY", line 706, in
obj = win32com.client.Dispatch('Powerpoint.Application')
File "C:ProgramDataAnaconda3libsite-packageswin32comclient__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "C:ProgramDataAnaconda3libsite-packageswin32comclientdynamic.py", line 98, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:ProgramDataAnaconda3libsite-packageswin32comclientdynamic.py", line 83, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147023584, 'Una sesixf3n de inicio especificada no existe. Es posible que haya finalizado.', None, None)
Я искал различные решения, я пробовал с различными модулями, я даже пытался создать файл PowerShell, который преобразует PowerPoint в PDF, и происходит то же самое, если я запускаю PS1 из CMD, он отлично работает, но если я запускаю его удаленно или через другой скрипт, он выходит из строя по той же причине, он не может открыть экземпляр PowerPoint.
Я также попытался удаленно сначала активировать графический интерфейс Windows (деактивировать экран блокировки пользователя и получить доступ, как если бы это был реальный человек), А затем выполнить любой сценарий (PY, PS1 и т. Д.), Но все равно при правильно открытом рабочем столе и без экрана блокировки пользователя сценарий завершается с ошибкой в точно такой же точке.
Кто-нибудь знает, в чем проблема и как ее решить? Спасибо.