InDesign:如何获取具有字符样式的段落内容

InDesign: How can I get paragraph contents with its characterStyles?

本文关键字:字符 样式 段落内 何获取 获取 InDesign      更新时间:2023-09-26

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

当我处理一个段落时,我可以得到它的段落风格和内容。我不明白的是:我如何才能获得内容内容的字符样式?

我在看文档,但我不明白如何进入一个段落,找到所有的字符样式和应用它们的文本部分。

例如,如果我有这样一段话:

我的漂亮段落。

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

最终结果应该是:

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

我怎样才能获得这些信息?

使用段落的TextStyleRange属性。

TextStyleRange是具有相同格式的单个连续文本范围。对于InDesign来说,格式是"本地"还是通过字符样式应用并不重要。

强制性警告:

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

非常最小示例代码:

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'));