【问题标题】:How can I programmatically detect if some text is visible or has overflowed in an InDesign document using ExtendScript?如何使用 ExtendScript 在 InDesign 文档中以编程方式检测某些文本是否可见或溢出?
【发布时间】:2012-06-11 20:59:10
【问题描述】:

我正在使用 ExtendScript 构建一个 InDesign 面板,它可以查找文本并将其显示给用户。为此,我使用the Character objectshowText() 方法。问题是有时我正在寻找的文本没有出现,因为即使该方法确实在正确的位置显示了正确的页面,但文本已经溢出并且不可见。

有没有办法检查文本是否可见?理想情况下,如果无法按原样查看文本,我希望能够依靠故事编辑器...

【问题讨论】:

    标签: adobe-indesign extendscript


    【解决方案1】:

    要检查单个字符的情况,请参阅 parentTextFrames 属性,它返回一个包含 0 或 1 帧的数组。在极少数情况下,左侧在一个帧中而右侧在以下帧中的插入点,您会得到两个帧。

    app.selection[0].characters.item(0).parentTextFrames.length
    

    您还可以将角色的索引与故事最后一个文本容器中的最后一个索引进行比较,例如

    app.selection[0].parentStory.textContainers.pop().characters.lastItem().index
    

    当然要先看看有没有溢出...

    app.selection[0].parentStory.overflows
    

    【讨论】:

    • 我刚刚根据您的解决方案制作了一个功能,它对我有用,谢谢!函数 checkNodeInOverflow(node){ var insp = node.insertionPoints[0];返回(insp.parentStory.overflows && insp.parentTextFrames.length == 0)?真假; } 顺便说一句,这只是为了查看 XML 节点是否在溢出中。
    【解决方案2】:

    您可以在 try/catch 语句中调用文本的基线属性。如果文本可见,baseline 将返回一个值,否则将引发错误。

    洛伊克

    【讨论】:

    • 谢谢。不过看起来有点像 hack,所以我会稍等片刻,看看是否有解决此问题的非错误解决方案。
    猜你喜欢
    • 2012-05-31
    • 2021-12-27
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多