inDesign脚本:使用JavaScript获取使用特定段落样式设置样式的文本和页面编号

时间:2012-10-17 15:31:34

标签: adobe-indesign indesign-server

我有一个inDesign文档,其中10页填充了文本。文本采用不同的段落样式设置样式,其中一些样式与构建自定义目录相关。

有两个相关的段落样式,“Header1”和“Header2”,我正在尝试构建我自己的目录,我想在文本文件中导出。

我需要获取的相关信息是使用“Header1”和“Header2”设置样式的文本以及相应的页码。

我尝试通过GREP实现这一目标并且成功了一半,但GREP扫描整个文档而不是逐页扫描。

有没有办法按页面按段落样式浏览所有样式的文本?

提前致谢!

2 个答案:

答案 0 :(得分:1)

查看InDesign API的Object模型。

您有类所以使用方法长度

迭代所有页面

然后,在这个循环中,为每个页面获取所有TextFrames

对于每个textFrame,使用Class Paragraph迭代每个TextFrame

在每个段落中,获取所需的属性。

Read this documentation to get a good start

答案 1 :(得分:1)

如果您不想使用GREP,您可以遍历您感兴趣的故事的每个段落,并收集应用了某种风格的段落。

在下面的示例代码中,我收集了para_with_style变量中的段落:

var doc = app.activeDocument;

var story = doc.stories[0];

// Get every paragraph in `story` (using `everyItem().getElements()` is more efficient)
var paras = story.paragraphs.everyItem().getElements();

// Collect every paragraph with a certain paragraph style
var applied_style = doc.paragraphStyles.itemByName('style-name');
var paras_with_style = [];
for (var i=0,l=paras.length; i<l; i++) {
   var para = paras[i];
   if (para.appliedParagraphStyle == applied_style) {
      paras_with_style.push(para);
   }
}

// Do something with each `para` in `paras_with_style`