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

InDesign CEP插件开发如何获取页面原点 解决自定义原点坐标偏移问题

你可以通过InDesign JavaScript API内置的属性直接获取标尺原点的偏移值,无需自定义getOrigin方法:
核心用到的是app.activeDocument.viewPreferences下的两个属性:

  • zeroPoint:返回用户手动设置的标尺原点坐标数组,格式为[x偏移量, y偏移量]
  • rulerOrigin:当前标尺的原点模式,枚举值包括页面原点、跨页原点等

方案1:手动计算坐标偏移

如果不想修改用户当前的标尺设置,可以通过偏移量修正你的绘制坐标:

// 获取当前用户设置的原点偏移
var offset = app.activeDocument.viewPreferences.zeroPoint;
var offsetX = offset[0];
var offsetY = offset[1];

// 假设你要绘制的目标原始坐标(基于页面默认左上角0原点)为oriX、oriY
var drawX = oriX - offsetX;
var drawY = oriY - offsetY;

// 用修正后的坐标绘制图形即可
var targetRect = app.activeDocument.pages[0].rectangles.add();
targetRect.geometricBounds = [drawY, drawX, drawY + 40, drawX + 40];

方案2:临时重置原点(更稳妥,无兼容问题)

如果需要处理多页、跨页等复杂场景,更推荐临时修改标尺设置,绘制完成后再恢复用户原有配置,完全不会影响用户操作习惯:

// 先备份用户原有设置
var originZero = app.activeDocument.viewPreferences.zeroPoint;
var originRulerMode = app.activeDocument.viewPreferences.rulerOrigin;

// 临时将标尺原点重置为页面默认左上角
app.activeDocument.viewPreferences.rulerOrigin = RulerOrigin.PAGE_ORIGIN;
app.activeDocument.viewPreferences.zeroPoint = [0, 0];

// 此处直接使用你原始的坐标绘制即可,不需要偏移计算
var targetRect = app.activeDocument.pages[0].rectangles.add();
targetRect.geometricBounds = [0, 0, 40, 40]; // 始终落在页面左上角位置

// 绘制完成后恢复用户原有设置
app.activeDocument.viewPreferences.zeroPoint = originZero;
app.activeDocument.viewPreferences.rulerOrigin = originRulerMode;

内容的提问来源于stack exchange,提问作者Fitspade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:09:03