0

我无法确定 DataMergeField 是否包含在 TextFrame 中。

var document = app.open('template.indd');
var dataMerge = document.dataMergeProperties;
var field;
for (field in document.dataMergeTextPlaceholders) {
    var story = field.parentStory;
    var content = story.contents;
    var textFrame = story.textFrames.item(0);
    //textFrame is null
}
//....

我正在尝试为任何 DataMergeFields 的文本内容提供换行、适合、填充选项,并根据 TextFrame 尺寸调整它们。在不知道文档中使用的任何 DataMergeFields 或 TextFrames 属性的情况下。

4

2 回答 2

1

像这样的东西应该在 JS 中工作:

var document = app.open('template.indd');
var hs = document.dataMergeTextPlaceholders;
var n = hs.length, h, tf;
while (n--) {
  h = hs[n];
  if ( h.storyOffset.parentTextFrames.length ) {
    tf = h.storyOffset.parentTextFrames[0]; 
    //do something with tf
   }
}

于 2016-02-07T17:30:53.167 回答
0

我能够使它与以下内容一起使用。我猜是使用document而不是app.documents.item(0)问题。

app.open('template.indd');
var phs = app.documents.item(0).dataMergeTextPlaceholders;
var i, textFrame, ph, story;
for (i = 0; i < phs.length; i++) {
    ph = phs.item(i);
    if (ph instanceof DataMergeTextPlaceholder) {
        story = ph.parentStory;
        if (story.textFrames.length > 0) {
            textFrame = story.textFrames.item(0);
            //...
        }
    }
}
于 2016-02-11T20:45:07.240 回答