2016-02-06 10 views
0

Я не могу определить, содержится ли DataMergeField в TextFrame.InDesign Server CS6 Scripting - Получить TextFrame, содержащий DataMergeField

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, используемых в документе.

ответ

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); 
      //... 
     } 
    } 
} 
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 
 
    } 
 
}

 Смежные вопросы

  • Нет связанных вопросов^_^