Scripting Flattersatz
Hey there,
I saw a script for creating rythmic left-aligned text frames. The thing is that the script is only working for InDesign 2021 but not 2023. Is there anyone who can maybe help me to get the script back to work?
Script:
#target "InDesign";
(function () {
var layerName = "R_R_Guides";
if (app.documents.length === 0) {
alert("Bitte öffnen Sie zuerst ein Dokument.");
return;
}
var doc = app.activeDocument;
init();
var len = app.selection.length;
if (len === 0) {
alert("Bitte wählen Sie zuerst einen Textrahmen aus.");
return;
}
var flatterzone = 15; // %
var randomness = 0; // %
var w = new Window("dialog", "Einstellungen");
w.orientation = "row";
w.alignChildren = "top";
var main_group = w.add("group");
main_group.orientation = "row";
var settings_group = main_group.add("group");
settings_group.orientation = "column";
var flatterzone_group = settings_group.add("group");
flatterzone_group.orientation = "row";
flatterzone_group.alignment = "right";
flatterzone_group.add("statictext", undefined, "Flatterzone:");
var e = flatterzone_group.add("statictext", undefined, flatterzone + "%");
e.characters = 4;
var slider = flatterzone_group.add("slider", undefined, flatterzone, 0, 100);
slider.onChanging = function () {
e.text = slider.value + "%";
flatterzone = parseInt(slider.value);
};
var randomness_group = settings_group.add("group");
randomness_group.orientation = "row";
randomness_group.alignment = "right";
randomness_group.add("statictext", undefined, "Zufälligkeit:");
var e2 = randomness_group.add("statictext", undefined, randomness + "%");
e2.characters = 4;
var slider2 = randomness_group.add("slider", undefined, randomness, 0, 100);
slider2.onChanging = function () {
e2.text = slider2.value + "%";
randomness = parseInt(slider2.value);
};
var btn_group = main_group.add("group");
btn_group.orientation = "column";
btn_group.add("button", undefined, "OK");
btn_group.add("button", undefined, "Abbrechen");
if (w.show() == 1) {
// OK
} else {
// Abbrechen
return;
}
flatterzone *= 0.01;
randomness *= 0.01;
var myLayer = doc.layers.itemByName(layerName);
if (!myLayer.isValid) {
var myLayer = doc.layers.add({ name: layerName });
}
for (var n = 0; n < len; n++) {
var sel = app.selection[n];
if (!(sel instanceof TextFrame)) {
alert("Die Auswahl ist kein Textrahmen. Ignoriere es.");
continue;
}
var x = sel.geometricBounds[3];
var y = sel.geometricBounds[0];
var width = x - sel.geometricBounds[1];
var cmToPointsRatio = 0.0352778;
var pointsize = sel.insertionPoints[0].pointSize * cmToPointsRatio;
var leading = sel.insertionPoints[0].leading * cmToPointsRatio;
if (leading === Leading.AUTO_VALUE) {
leading = pointsize * 1.2;
Would be very helpful!!
Best regards,
Severin
