Python и Indesign - как запустить скрипт? - PullRequest
0 голосов
/ 21 января 2020

Я пробую скрипт, который нашел на github, чтобы начать с этим, и у меня ошибка.

import win32com.client
import os

app = win32com.client.Dispatch('InDesign.Application.CC.2017')

myFile = r'C:\Users\gitte\Documents\Gittel Designs\eMAIL BANNERS\EmailBanners.indd'
myDocument = app.Open(myFile)

idPDFType = 1952403524
if app.Documents.Count is not 0:
    directory = os.path.dirname(myFile)
    docBaseName = myDocument.Name
    for x in range(0, myDocument.Pages.Count):
        myPageName = myDocument.Pages.Item(x + 1).Name
        # We want to export only one page at the time
        app.PDFExportPreferences.PageRange = myPageName
        # strip last 5 char(.indd) from docBaseName
        myFilePath = directory + "\\" + docBaseName[:-5] + "_" + myPageName + ".pdf"
        myDocument.Export(idPDFType, myFilePath)

myDocument.Close()

Это моя ошибка, которая, как я полагаю, связана с Indesign - я пытался изменить год, но как мне заставить его распознать мое приложение?

runfile('C:/Users/gitte/Documents/SPYDER PYTHON/indesign export all pages as pdfs.py', wdir='C:/Users/gitte/Documents/SPYDER PYTHON')
Traceback (most recent call last):

  File "C:\Users\gitte\Documents\SPYDER PYTHON\indesign export all pages as pdfs.py", line 10, in <module>
    app = win32com.client.Dispatch('InDesign.Application.CC.2017')

  File "C:\Users\gitte\Anaconda3\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)

  File "C:\Users\gitte\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)

  File "C:\Users\gitte\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)

com_error: (-2147221005, 'Invalid class string', None, None)

1 Ответ

0 голосов
/ 22 января 2020

Ваша строка может быть неверной. Для 2020 года это "InDesign.Application.2020", ниже работает на моем. Если вы не уверены, поищите в реестре «InDesgin.Application». Надеюсь, это поможет.

app = win32com.client.Dispatch("InDesign.Application.2020")

...