用于搜索和替换的InDesign python脚本

时间:2019-01-29 15:45:31

标签: python replace adobe-indesign

我想使用python脚本在InDesign文件中查找并替换一些文本,然后将其另存为pdf。

我设法使用python打开indesign并将其另存为pdf,但是我不知道如何搜索文本并将其替换为脚本第一部分生成的随机字符串。

这是我到目前为止所得到的:

import win32com.client
import random
import string

def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
    return ''.join(random.choice(chars) for _ in range(size))

voucher=id_generator()

app = win32com.client.Dispatch('InDesign.Application.CC.2018')
myFile = r'C:\Users\some_file.indd'
    myDocument = app.Open(myFile)
myPDFFile = r'C:\Users\some_file.pdf'
    directory = os.path.dirname(myPDFFile)

    idPDFType = 1952403524
    # 1=[High Quality Print], 2=[PDF/X-1a:2001] etc..
    myPDFPreset = app.PDFExportPresets.Item(1)
    try:
        if not os.path.exists(directory):
            os.makedirs(directory)
        if os.path.exists(directory):
            myDocument.Export(idPDFType, myPDFFile, False, myPDFPreset)
    except Exception as e:
        print('Export to PDF failed: ' + str(e))
    myDocument.Close()

1 个答案:

答案 0 :(得分:0)

您需要遍历文档的所有TextFrame,然后搜索并用ChangeText函数替换文本。

以下是您可以做什么的摘要:

voucher = id_generator()
searchText = 'test'

app = win32com.client.Dispatch('InDesign.Application.CC.2018')
app.scriptPreferences.userInteractionLevel = 1699640946
myFile = r'C:\Users\some_file.indd'
myDocument = app.Open(myFile)
myPage = myDocument.Pages.Item(1)

idNothing = 1851876449  #from enum idNothingEnum, see doc_reference

for it in myDocument.TextFrames:
    if searchText in (it.Contents):
        app.FindTextPreferences.FindWhat = searchText
        app.ChangeTextPreferences.ChangeTo = voucher
        it.ChangeText()
        continue        

    app.FindTextPreferences.FindWhat = idNothing
    app.ChangeTextPreferences.ChangeTo = idNothing

#and then save the changes as PDF...