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
相关产品推荐
相关产品推荐

