Как перебрать все текстовые фреймы, находящиеся в группах?

  • Автор темы Автор темы aleksasha
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

aleksasha

Топикстартер
15 лет на форуме
Сообщения
316
Реакции
5
Как перебрать все текстовые фреймы, находящиеся в группах?
Приведите кусок кода для примера, плз...
 
пишу на питоне, как то так... подключаемся, перебираем все объекты (pageItems), заводим в цикл, дускрипт нужен, чтобы найти типы объектов, создаем рекурсию (myrec), чтобы отловить группу в группе
Код:
# encoding: utf-8
import win32com
from win32com.client import Dispatch
 
app = win32com.client.dynamic.Dispatch('Indesign.Application.CS5.5')
myDocument = app.ActiveDocument
pi = myDocument.pageItems
 
def getTypeById(id):
    return app.DoScript("app.activeDocument.pageItems.itemByID(%s).getElements()[0].constructor.name;" % id,1246973031)
def myrec(grp):
    for i2 in xrange(0,grp.count):
        if getTypeById(grp[i2].id) == 'TextFrame':
            rez = grp[i2].contents
        if getTypeById(grp[i2].id) == 'Group':
            rez = myrec(grp[i2].pageItems)
    return rez
 
for i in xrange(0,pi.count):
    if getTypeById(pi[i].id) == 'TextFrame':
        print pi[i].contents
    if getTypeById(pi[i].id) == 'Group':
        print myrec(pi[i].pageItems)
 
  • Спасибо
Реакции: aleksasha
вот так, по-моему
app.activeDocument.groups.everyItem().textFrames.everyItem().getElements().slice(0);
 
  • Спасибо
Реакции: aleksasha
Спасибо! Вечером попробую...
 
Всё заработало. Еще раз спасибо всем! Спрошу еще об одном. Как проигнорировать группы за пределами страниц, т.е. находящиеся на пастборде?
 
вот так по идее будет брать только то, что на странице (не проверял)

app.activeDocument.pages.everyItem().groups.everyItem().textFrames.everyItem().getElements().slice(0);
 
  • Спасибо
Реакции: aleksasha
чуть по-другому решил... Всем спасибо!
 
Статус
Закрыто для дальнейших ответов.