2013-04-11 4 views
2

Немного фона перед тем, как я начинаю: Я никоим образом не специалист InDesign, но мне было поручено вытащить некоторую текстовую информацию из файлов InDesign нашей компании, чтобы сделать немного аналитики , Каждый файл InDesign, с которым я работаю, имеет несколько страниц, и каждый из этих страниц использует Истории на главной странице (Простите меня, если я использую неправильную терминологию, я работаю над ограниченным пониманием объектной модели InDesign) , Используя стандартный сценарий экспорта всего текста в качестве отправной точки, я смог расширить эту функциональность, чтобы выгрузить другую полезную информацию; таких как геометрические границы. Я отправил несколько ниже код:Определение отношения между историями и страницами

myFileName = "StoryID" + myID + myExtension; 
myFilePath = myFolder + "/" + myFileName; 
myFile = new File(myFilePath); 

myFile.encoding='text'; 
myFile.open('w'); 

containers = myStory.textContainers; 

if (containers[0].overridden) { 
    for (i = 0; i < myStory.words.length; i++) { 
     myFile.write(myStory.words[i].contents); 
     myFile.write(" "); 
    } 
    myFile.write("\n"); 
} 
else { 
    myFile.write(myStory.contents + '\n'); 
} 

var geometry = containers[0].geometricBounds 
myFile.write("++" + containers[0].parent.name + '\n'); 
myFile.write("$$" + geometry[0] + "\t" + geometry[1] + "\t" + geometry[2] + "\t" + geometry[3] + "\n"); 

pageitems = myStory.allPageItems; 
for (j = 0; j < pageitems.length; j++){ 
    myFile.write("--" + pageitems[0]); 
} 
myFile.close(); 

У меня есть вопрос в том, как определить, все страницы, появляется история в? Например, я могу сказать, что у меня 4 страницы: {Мастер, регион 1, регион 2, регион 3}. Регион 1 - 3 все наследует блок Истории от Мастера. Когда я запускаю этот скрипт, я получаю только один экземпляр блока Story, экземпляр, принадлежащий Master. Тем не менее, мне было бы интересно узнать, что блок Story, о котором идет речь, принадлежит всем 4 страницам. Я попытался получить доступ к свойству allPageItems, но я продолжаю получать 0 результатов.

Любая помощь будет оценена по достоинству. Я работаю над InDesign CS 6, если это помогает

ответ

3

Когда вы обращаетесь к allPageItems элемента Story, вы получаете доступ ко всем элементам страницы, которые закреплены в этой истории, что я не думаю, что вы хотите.

Когда вы получаете доступ к собственности allPageItems, вы получаете 0 результатов, потому что ваш Story не содержит textFrames. Элемент Story содержится в textContainers не textFrames. Я знаю, что это сбивает с толку!

Если вы хотите определить, есть ли история на определенной странице, вы можете получить доступ к объекту'parentPage.

A Story проходит через несколько textContainers. Например:

    link       link 
TextContainer  -->  TextContainer2  -->  TextContainer3 
|_____________________________________________________________________| 
            | 
           Story 

Story может также содержать textFrames, rectangles, words и т.д. Например:

        Story 
___________________________________|__________________________________ 
|                  | 
Word --> Word2 --> TextFrame --> Word3 --> Word4 --> Word5 
+0

Спасибо за разъяснение Джош, это было очень полезно! Вы знакомы с тем, как переопределения представлены в объектной модели? Например, если Story1 переопределен новым текстом, появляется ли это как новый TextContainer в исходной истории или новый объект Story, где переопределенное свойство является истинным? – Jama22

+0

Мммм, пытаясь понять, что ты говоришь. Если на странице используется мастер-лист, элементы, которые были на главной странице, применяются к странице, но вы не можете их изменить, потому что они еще не переопределены. Если вы хотите переопределить элемент на этой странице, вам нужно вызвать функцию 'override' для этого элемента следующим образом:' masterPageItem.override (pageItem) '. –

+0

Возможно, вы думаете об этом, так как 'pageItem' все еще находится на главной странице, пока вы не переопределите его на фактической странице ... может быть, надеюсь, я не смущаю себя. –