如何使用Python将PDF所有页面分别置入到InDesign的独立页面中
解决代码
import win32com.client app = win32com.client.Dispatch('InDesign.Application') # 打开目标InDesign文档 myFile = r'C:\test.indd' myDocument = app.Open(myFile) # 要置入的PDF路径 pdf_path = r'C:\mail.pdf' # 定义要置入的PDF页码范围:1-20页 start_page = 1 end_page = 20 for pdf_page_num in range(start_page, end_page + 1): # 新增空白页(如果你的文档已经提前建好了对应数量的页面,可以删掉下面这行) myPage = myDocument.Pages.Add() # 在当前页面创建和页面等大的矩形框 myRectangle = myPage.Rectangles.Add() myRectangle.GeometricBounds = ["0", "0", "297mm", "210mm"] myRectangle.StrokeWeight = 0 # 重点:PDF置入偏好设置是app级别的属性,不是page对象的属性 app.PDFPlacePreference.PageNumber = str(pdf_page_num) # 置入指定页码的PDF内容 myRectangle.Place(pdf_path)
修改说明
- 报错的核心原因是
PDFPlacePreference是InDesign应用实例的属性,不属于单个Page对象,调整到app下调用即可 - 每次循环置入前修改
app.PDFPlacePreference.PageNumber的参数值,就可以指定当前要置入的PDF页码,参数要求为字符串格式,所以要用str()转换数字页码 - 如果你的InDesign文档已经提前创建好了对应数量的页面,不需要循环新增页面,可以删掉
myPage = myDocument.Pages.Add()这行,改为按索引取已有页面即可 - 代码里的
GeometricBounds参数对应A4横版尺寸,可根据你的实际页面尺寸调整数值
内容的提问来源于stack exchange,提问作者Oleg
相关产品推荐
相关产品推荐

