【问题标题】:InDesign script targeting specific text frames针对特定文本框架的 InDesign 脚本
【发布时间】:2019-08-09 11:44:22
【问题描述】:

我有一个大约 550 页的 InDesign 文档。在每一页上,有 4 个框架,所有页面看起来都一样(见下图)。我正在使用 InDesign CS6 和 JS。

如果可能的话,我需要一个能够实现一些相当基本功能的脚本:

1.

  • 目标文本框 (1)
  • 删除文本框

2.

  • 目标文本框 (2)
  • 应用给定的段落样式

3.

  • 目标图像帧 (4)
  • 按比例调整框架
  • 在所有页面上都这样做

我尝试了以下方法(见下文)。不知何故,ID 告诉我“myParagraph.applyParagraphStyle”和“myFrame.fit”是“不是函数”。

2.

var myDocument = app.activeDocument;
myParagraph = myDocument.pages.item(1);
myParagraphStyle  = myDocument.paragraphStyles.item('datum');
myParagraph.applyParagraphStyle(myParagraphStyle,true);

3.

var myDocument = app.activeDocument;
var myGraphic = myDocument.pages.item(3);
var myFrame = myGraphic.parent;
myFrame.fit(FitOptions.proportionally);

【问题讨论】:

    标签: javascript scripting adobe-indesign


    【解决方案1】:

    您需要查看 InDesign 的 DOM。看看这里:

    http://jongware.mit.edu/idcs6js/

    myParagraph = myDocument.pages.item(1);

    段落不是页面的子节点。另外,我会一次处理一页并循环浏览页面。

    试试:

    var myParagraph = myDocument.pages[0].textFrames[0].paragraphs[0];
    

    图形的类似问题。您需要解决作为图形父级的容器,然后是它包含的图形:

    var myGraphic = myDocument.pages[0].rectangles[0].graphics[0];
    

    var myGraphic = myDocument.pages[0].allGraphics[0].graphics[0];
    

    或者,您可以使用 pageItems,而不是 textFrames 或矩形

    【讨论】:

    • 你能帮我个忙吗?只需向我展示此循环在页面中的样子,因为我是脚本新手,我需要两个小时才能完成它。
    • 通过索引引用页面项目是不可靠的 - 它不一定保证您将定位正确的页面项目。要引用正确的页面项目,请考虑改用 geometricBounds 属性 - 例如,您可以通过检查其 y1x1 坐标是否在给定范围内来推断正确的页面项目。
    • 在这种情况下它起作用了,因为每个页面看起来都一样。但是你能举个例子,你的解决方案是如何工作的吗?
    • @VHS - Here 是处理每个文本框架并根据其 y1 和 x1 坐标对其进行处理(例如删除它)的要点。它需要 1. 循环遍历文档中的每一页。 2. 通过自定义handleTextFrames 函数处理在每个页面上找到的每个文本框。 3.handleTextFrames 函数的主体中,我们获取文本框架页面几何形状并根据它的x1y1 坐标有条件地做一些事情(例如删除它)。顺便提一句。在给某人写评论时,您应该@<name>他们,否则他们不会收到通知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多