InDesign Server CS6 脚本 - 获取包含 DataMergeField 的 TextFrame
InDesign Server CS6 Scripting - Get TextFrame containing DataMergeField
我无法确定 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 属性。
像这样的东西应该在 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
}
}
我能够让它与以下内容一起使用。我猜测使用 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);
//...
}
}
}
我无法确定 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 属性。
像这样的东西应该在 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
}
}
我能够让它与以下内容一起使用。我猜测使用 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);
//...
}
}
}