2013-10-04 2 views
1

Я пытаюсь создать сценарий создания текстовых фреймов с некоторым текстом внутри, чтобы текстовый фрейм автоматически расширялся до необходимой высоты. Это работает, но не так, как с пользовательским интерфейсом. Я хочу добиться того, что абзац в текстовом фрейме имеет ширину 15 мм со всех сторон. Но это работает только для левого и правого отступа, а не для интервала до и после абзаца. Когда вы запустите скрипт ниже, вы увидите, что текстовый фрейм имеет ровно высоту абзаца внутри. Но когда вы открываете диалог «Стили объектов», нажмите «Общие параметры текстового фрейма» и «Предварительный просмотр», вы увидите, что применяются пресеты «Вставки вставки», в то время как они не применяются во время выполнения скрипта. Итак, вопрос: как я могу писать сценарии с текстовым фреймом с внутренними полями со всех сторон и соответствовать размеру текстового фрейма, включая поля для содержимого?Indesign CS5: Как поместить абзац в текстовый фрейм с помощью сценариев

// close all your unsaved documents before you run this script 
for (var i = 0; i < app.documents.length; i++) { 
    app.documents[i].close(SaveOptions.NO); 
} 

var myDocument = app.documents.add(true); 
var currentPage = myDocument.spreads.lastItem().pages.lastItem(); 

myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS; 
myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS; 

myColorWHITE = myDocument.colors.add({name:"WHITE",model:ColorModel.process,colorValue:[0,0,0,0]}); 

paragraphStyleBox = myDocument.paragraphStyles.add({name:"box"}); 
with (paragraphStyleBox) { 
    spaceAfter = "15mm"; 
    spaceBefore= "15mm"; 
    leftIndent = "15mm"; 
    rightIndent = "15mm"; 
} 

var objectStyleBox = myDocument.objectStyles.add({name:"Box"}); 
with (objectStyleBox) { 
    appliedParagraphStyle = paragraphStyleBox; 
    fillTransparencySettings.blendingSettings.opacity = 80; 
    fillColor = myColorWHITE; 
    textFramePreferences.insetSpacing = ["15mm","15mm","15mm","15mm"]; 
//  autoFit = true; 
} 

var myObject = currentPage.textFrames.add(); 
myObject.applyObjectStyle(objectStyleBox); 
myObject.geometricBounds = ["25mm","25mm","50mm","120mm"]; 


myObject.contents = "Milicae is. Ortemnem mium host poteatius lis. At perentilinc tum non diem et quons interet; nonfex milicta demque num. Eci publiae tes re porestem que movena, nos culessi etilissidiem utem. Publis. Fultorum mo vid con verdientime cervivis cri, sena, publictam quit, ur, quemena tamquist grac ret; habena, siderfe conlocr evitio adhui cortuidemeis consum andam aciam ma, fuis ore aucterei ius manum pubis. Fuliceristam octu vignonsulium cum sent, us C. Mus entebatque et videt; horeo, conem avoltor enatus. Scierox mus ommovero, quam inatropotius occi prae et; nos ad me prore cotam teribut audeatquam in demus, abus bonsidem cus sentem dum mo et qua publis? Forit intum inu vis, etem mei senatilis iam eoribut octum idi, sendam aus elut viventeat. Opiorbissi inatur aci fautem ommorac tatuus crem ia? Hosulium perbemurbit." 
    + "Il tatum abem sulius pubis perfir la re ius vivir unirmis, popos, oribuntim hocchi, quam veresultuam invo, que facien hocciendet videt? Ficae ad pror quem iam nu virid imus abus num nihil hocupplintem acchicivis, senditua quam etore queremur aderibus iaet? Ximodit rudemus addum nononsus et; horementi, se con Etra, que atum ta, se teniris essoltustia erum tem fuem defatus clem peris horicaedeesi ina, utum facientem atu quodiora te in Itam qua re me ori, nes conihi, supplica publicae conc or aurbist abefex satam es nihi, pratienatum auciste beffren deriti serrionficia et vigit quitiac turnihil vidium foraequam in pori peciviu es! Ximus bonveraes imoena, mus niquid popubis ad nonsu modius, cus iam con in tea occidici ipieris ulicute nonclud emuressi ina, crem, neris,"; 

myObject.paragraphs[0].applyParagraphStyle(paragraphStyleBox,true); 
myObject.fit(FitOptions.FRAME_TO_CONTENT); 

ответ

1

Есть две вещи, которые здесь кажутся проблема:.

Во-первых, что ObjectStyle имеет enableTextFrameGeneralOptions свойство, которое должно быть включено для того, чтобы врезке пнуть в

Во-вторых, поскольку вы применяете стиль абзаца с тем же интервалом, что и стиль объекта, у вас будет двойной интервал. Таким образом, вы, вероятно, должны удалить стиль абзаца или отключить его интервал между полями.

// close all your unsaved documents before you run this script 
for (var i = 0; i < app.documents.length; i++) { 
    app.documents[i].close(SaveOptions.NO); 
} 

var myDocument = app.documents.add(true); 
var currentPage = myDocument.spreads.lastItem().pages.lastItem(); 

myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS; 
myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS; 

myColorWHITE = myDocument.colors.add({name:"WHITE",model:ColorModel.process,colorValue:[0,0,0,0]}); 

var objectStyleBox = myDocument.objectStyles.add({name:"Box"}); 
with (objectStyleBox) { 
    fillTransparencySettings.blendingSettings.opacity = 80; 
    fillColor = myColorWHITE; 
    textFramePreferences.insetSpacing = ["15mm","15mm","15mm","15mm"]; 
    enableTextFrameGeneralOptions = true; // Enables general options and inset spacing 
    autoFit = true; 
} 

var myObject = currentPage.textFrames.add(); 
myObject.applyObjectStyle(objectStyleBox); 
myObject.geometricBounds = ["25mm","25mm","50mm","120mm"]; 


myObject.contents = "Milicae is. Ortemnem mium host poteatius lis. At perentilinc tum non diem et quons interet; nonfex milicta demque num. Eci publiae tes re porestem que movena, nos culessi etilissidiem utem. Publis. Fultorum mo vid con verdientime cervivis cri, sena, publictam quit, ur, quemena tamquist grac ret; habena, siderfe conlocr evitio adhui cortuidemeis consum andam aciam ma, fuis ore aucterei ius manum pubis. Fuliceristam octu vignonsulium cum sent, us C. Mus entebatque et videt; horeo, conem avoltor enatus. Scierox mus ommovero, quam inatropotius occi prae et; nos ad me prore cotam teribut audeatquam in demus, abus bonsidem cus sentem dum mo et qua publis? Forit intum inu vis, etem mei senatilis iam eoribut octum idi, sendam aus elut viventeat. Opiorbissi inatur aci fautem ommorac tatuus crem ia? Hosulium perbemurbit." 
+ "Il tatum abem sulius pubis perfir la re ius vivir unirmis, popos, oribuntim hocchi, quam veresultuam invo, que facien hocciendet videt? Ficae ad pror quem iam nu virid imus abus num nihil hocupplintem acchicivis, senditua quam etore queremur aderibus iaet? Ximodit rudemus addum nononsus et; horementi, se con Etra, que atum ta, se teniris essoltustia erum tem fuem defatus clem peris horicaedeesi ina, utum facientem atu quodiora te in Itam qua re me ori, nes conihi, supplica publicae conc or aurbist abefex satam es nihi, pratienatum auciste beffren deriti serrionficia et vigit quitiac turnihil vidium foraequam in pori peciviu es! Ximus bonveraes imoena, mus niquid popubis ad nonsu modius, cus iam con in tea occidici ipieris ulicute nonclud emuressi ina, crem, neris,"; 

myObject.fit(FitOptions.FRAME_TO_CONTENT); 
+0

спасибо. Ваше решение работает. Если я полностью удаляю настройки интервала абзаца и сохраняю только интервал вставки текстового фрейма, скрипт ведет себя по своему желанию. Тем не менее, я задаюсь вопросом, почему он работает * не *, если я сохраняю интервал абзаца и отступы моего исходного сценария. В последнем случае вставки и настройки интервала абзаца складываются с большим размахом, но автоматическая установка больше не работает. Вы знаете, почему? –

+0

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