При удалении фрейма виснет InDesign Server

Статус
Закрыто для дальнейших ответов.

dim4an

Участник
Топикстартер
Сообщения
93
Реакции
1
Может подскажете в рамках данной темы.
Есть текстфрейм, в него помещаются другие фреймы, до тех пор пока у родительского фрейма значение overflow не станет равным true. Получается так, что в фрейм поместилось 5 фреймов, а 6 не поместился, он "ушел в осадок". Его необходимо удалить. Пытаюсь проделать это вот так
Код:
masterTextFrame.parentStory.textFrames.lastItem().remove();
но результатов ноль.
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
Как определен masterTextFrame?
 

dim4an

Участник
Топикстартер
Сообщения
93
Реакции
1
Сначала мы его находим в документе по скрипт лабел
Код:
var stColumTempl = getPageItemByScriptLabel(layoutDoc, "colum1");
далее дублируем и передаем в функцию для заполнения его данными, где stColumTemplDupl становится masterTextFrame
Код:
    var stColumTemplDupl = stColumTempl.duplicate();
    moveIntoMasterTextFrame(stColumTemplDupl, myObjectList);
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
Что дает вывод
Код:
app.consoleout(masterTextFrame.toString())
после определения masterTextFrame?
 

dim4an

Участник
Топикстартер
Сообщения
93
Реакции
1
Что дает вывод
Код:
app.consoleout(masterTextFrame.toString())
после определения masterTextFrame?

в консоль вроде все правильно выводит "object TextFrame".
Возможно я изначально некорректно выразился. Хоть и результата от выполнения данной операции нет, но он все же есть. Сам процесс InDesign Server вешается намертво. Убить его можно только через таск менеджер. Может баг самого индизайна?
 

dim4an

Участник
Топикстартер
Сообщения
93
Реакции
1
Может немного ясности принесет полный код вставки фрейма в родительский фрейм.
Код:
    var newTextFrame = masterTextFrame.insertionPoints[0].textFrames.add();
    newTextFrame.properties = frame.properties;
    if (newTextFrame.texts.length > 0) {
        newTextFrame.texts[0].remove();
    }
    frame.texts[0].duplicate(LocationOptions.AT_BEGINNING, newTextFrame.texts[0]);
    newTextFrame.textFramePreferences.properties = frame.textFramePreferences.properties;

frame - фрейм заполненный данными
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
Желательно точно найти, на каком действии IDS виснет — через лог в консоль.
Можно попробовать удалять таким образом:
Код:
masterTextFrame.parentStory.textFrames[-1].parent.remove();
 

dim4an

Участник
Топикстартер
Сообщения
93
Реакции
1
Желательно точно найти, на каком действии IDS виснет — через лог в консоль.
Можно попробовать удалять таким образом:
Код:
masterTextFrame.parentStory.textFrames[-1].parent.remove();

предложенный вами способ, тоже вешает индизайн :(. Обычный тесктфрейм удаляется, а вот если он не поместился в фрейме, то не удаляется. Может есть какой то способ полностью очистить то, что не поместилось в фрейм?
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
Еще один вариант:
Код:
masterTextFrame.parentStory.recompose();
перед удалением фрейма.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
у меня одного ощущение, что происходят какие-то странные манипуляции? почему бы не расставлять на полосы обычные фреймы, без инлайна? с ними работать намного проще - двигать как угодно, в частности
 

dim4an

Участник
Топикстартер
Сообщения
93
Реакции
1
у меня одного ощущение, что происходят какие-то странные манипуляции? почему бы не расставлять на полосы обычные фреймы, без инлайна? с ними работать намного проще - двигать как угодно, в частности

Возможно вы правы. Но у меня стоит зада, создать документ, который не будет требовать вмешательства в его верстку. Инлайн фреймы выбрал потому что, это первый способ, который я увидел, и поразмыслив над ним немного, подумал что, так я смогу выполнить поставленную задачу. Ну а еще у меня опыта работы c IDS всего неделя)
 

dim4an

Участник
Топикстартер
Сообщения
93
Реакции
1
Еще один вариант:
Код:
masterTextFrame.parentStory.recompose();
перед удалением фрейма.

увы, тоже самое. Решил пока отложить это в долгий ящик. Решил проблему следующим образом. После генерации документа, выполняю следующий код.
Код:
    for (var i = 0; i < layoutDoc.pages.length; i++) {
        var tfLength = layoutDoc.pages[i].textFrames.length;
        for (var j = 0; j < tfLength; j++) {
            var tf = layoutDoc.pages[i].textFrames[j];
            if (tf.overflows) {
                try {
                    tf.parentStory.textFrames.lastItem().remove();
                } catch (e) { }
            }
        }
    }
 
Статус
Закрыто для дальнейших ответов.