Question

I’m trying to script the creation of text frames with some text inside so that the text frame automatically expands to the necessary height. This works, but not the same way as with the UI. What I want to achieve is that the paragraph in the text frame has a margin of 15mm on all sides. But this works only for the left and right indent, not for the spacing before and after the paragraph. When you run the script below, you’ll see that the text frame has exactly the height of the paragraph within. But when you now open the “Object Styles” dialogue, click on “Text Frame General Options” and on “Preview”, you’ll see that the “Inset Spacing” presets are applied, while they are not applied during the script execution. So the question is: How can I by scripting create a text frame with inner margins on all sides and fit the text frame size including the margins to the content?

// 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);
Was it helpful?

Solution

There are two things here that seem to be the problem:

First is that the ObjectStyle has a enableTextFrameGeneralOptions property that needs to be enabled in order for the inset to kick in.

Second is that because you are applying a paragraph style with the same spacing as the object style, you will have double the spacing. So, you should probably remove the paragraph style or turn off it's margin spacing.

// 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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top