InDesign:如何使用characterStyles获取段落内容?

时间:2014-04-14 10:21:48

标签: javascript adobe-indesign

我试图为InDesign编写一个非常自定义的导出脚本(我有CC 9.2,但我的目标是CS6)。

当我处理一个段落时,我可以得到它的paragraphStyle及其内容。我不明白的是:如何获取内容的内容的字符?

我正在查看文档,但我不明白如何进入一个段落并查找所有characterStyles及其应用的文本部分。

例如,如果我有一个如下所示的段落:

  

我的好的段落。

我想知道"My "" paragraph."有style1,而"nice"有style2。

最终结果应该是:

[
  {
    text: "My ",
    style: "style1"
  },
  {
    text: "Nice",
    style: "style2"
  },
  {
    text: " paragraph.",
    style: "style1"
  }
]

我如何获得该信息?

1 个答案:

答案 0 :(得分:5)

使用段落的TextStyleRange属性。

TextStyleRange是一个具有相同格式的连续文本范围。 InDesign无论格式是否为“本地”都无关紧要。或通过字符样式应用。

强制性警告:

  1. TextStyleRanges参见所有本地格式,无论是否通过字符样式应用。
  2. TextStyleRange格式化没有看到GREP样式。
  3. 段落中的最后一个文字范围可能(并且通常)愉快地包含最终回报,以及以下段落中的任何和所有文本仍然包含完全相同的格式。如果检索每个段落的textStyleRanges,请在返回段落后检查每个返回的文本内容是否存在文本。如果它确实包含段落返回,则可以选择剪掉多余的文本,然后退出当前段落的循环。
  4. 非常最小的示例代码:

    tsr = app.selection[0].paragraphs[0].textStyleRanges;
    
    text = [];
    for (i=0; i<tsr.length; i++)
        text.push ('text: "'+tsr[i].contents+'", style: "'+tsr[i].appliedCharacterStyle.name+'"');
    alert (text.join ('\r'));