Python InDesign脚本:如何从预检结果获取溢出文本框实现自动调整大小
解决方法
- 不需要解析PreflightProcess返回的纯文本报错信息,直接访问
PreflightError实例的内置sourceObject属性,即可直接获取触发报错的对应文本框对象,无需自行做字符串映射匹配。 - 文本溢出对应的固定错误码为
1409032528,遍历预检错误时先判断错误码,即可快速筛选出所有存在溢出问题的文本框,后续直接操作对应对象调整字号即可,参考实现逻辑如下:
# 前置条件:已完成预检操作,拿到preflight_process实例 preflight_errors = preflight_process.errors for err in preflight_errors: # 仅处理文本溢出错误 if err.errorCode != 1409032528: continue # 获取触发报错的目标文本框实例 target_text_frame = err.sourceObject # 自动缩小字号直到文本不溢出或达到设定的字号下限 current_font_size = target_text_frame.parentStory.pointSize min_font_size = 6 adjust_step = 0.5 while target_text_frame.overflows and current_font_size > min_font_size: current_font_size -= adjust_step target_text_frame.parentStory.pointSize = current_font_size
- 如果你使用的Python桥接接口未暴露
sourceObject属性,可以提取报错信息中的runtime ID(你示例中的R=2就是对象的运行时ID),遍历文档所有文本框匹配id属性即可定位到目标对象。
内容的提问来源于stack exchange,提问作者Felix Schön
相关产品推荐
相关产品推荐

