Indesign CS5:如何通过脚本将段落放入文本框架中

时间:2013-10-04 09:21:00

标签: scripting frame adobe-indesign

我正在尝试编写带有一些文本的文本框架的脚本,以便文本框架自动扩展到必要的高度。这有效,但与UI不同。我想要实现的是文本框架中的段落各边都有15mm的边距。但这只适用于左右缩进,而不适用于段落前后的间距。 当您运行下面的脚本时,您将看到文本框架正好具有该段落的高度。但是,当您现在打开“对象样式”对话框时,单击“文本框架常规选项”并在“预览”上,您将看到应用了“插入间距”预设,而在脚本执行期间不应用它们。 所以问题是:我如何通过脚本创建一个带有内边距的文本框架,并使文本框架大小适应内容的边距?

// 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 个答案:

答案 0 :(得分: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);