2014-11-13 1 views
0

Хорошо, скажем, у меня есть этот textFrame выбран:Фрейм Для содержания после изменения его содержание

starting point

Я хочу, чтобы применить это:

Fit Frame To Content

Чтобы получить этот ожидаемый результат :

wanted result

С помощью этого кода это не проблема:

var doc = app.activeDocument; 
var target = doc.selection[0]; 
target.fit(FitOptions.frameToContent); 

Но как только я установить содержание пойдет не так. Даже если контент тот же, что и был.

var doc = app.activeDocument; 
var target = doc.selection[0]; 
target.contents = "0209 - Lorem ipsum dolor sit amet consectetur adipiscing elit nam finibus ut justo at fermentum maecenas tincidun libero at aliquet finibus libero sem semper massa."; 
target.fit(FitOptions.frameToContent); 

Теперь я получаю 1 большая линия !:

unwanted result

Является ли это ошибка, или мне нужно, чтобы вызвать метод обновления или что-то?

+1

(Untested) Добавьте 'target.recompose()' после установки содержимого. Составление (т. Е. Разбиение текста на строки) обычно происходит в фоновом режиме; ID может не иметь времени между двумя вызовами функций для этого. – usr2564301

+0

Спасибо, человек! Работает! – clankill3r

ответ

1

Добавить target.recompose() после настройки содержимого. Составление (т. Е. Разбиение текста на строки) обычно происходит в фоновом режиме; ID может не иметь времени между двумя вызовами функций для этого.

Это не видно из документации когда вам нужно явно вызывать recompose, но, как правило, вы можете предположить, взаимодействующие через текст contents свойства всегда нуждается. contents исходного текста InDesign переводятся с и на объект строки Javascript и, таким образом, теряют все «родные» форматирование, включая композицию всех и всех абзацев.

Я только что попробовал это с моим надежным старым CS4 и там он работает без recompose, хотя это и не является окончательным; InDesign, возможно, было «время», чтобы сделать это в фоновом режиме, без каких-либо других задач. Так что форсировать это может быть хорошей идеей.