我想使用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()
答案 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...