You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:54:05