[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Verlauf per Skript erstellen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Verlauf per Skript erstellen

tsone
Beiträge gesamt: 104

25. Jun 2025, 15:50
Beitrag # 1 von 11
Bewertung:
(2623 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich habe ein JS, mit dem ich ein Verlaufsfeld in InDesign erstellen lasse.

Code
var doc = app.documents[0]; 
var _auswahl = app.selection[0];

var gradient = doc.gradients.add({name: "mein Verlauf"});
gradient.type = GradientType.LINEAR;

gradient.gradientStops.add();
gradient.gradientStops.add();

var color1 = doc.colors.add({name: "RotRGB", space:ColorSpace.rgb,model:ColorModel.spot, colorValue: [131, 58, 180]});
var color2 = doc.colors.add({name: "GelbRGB", space:ColorSpace.rgb,model:ColorModel.spot, colorValue: [253, 29, 29]});
var color3 = doc.colors.add({name: "GruenRGB", space:ColorSpace.rgb,model:ColorModel.spot, colorValue: [252, 176, 69]});
var color4 = doc.colors.add({name: "BlauRGB", space:ColorSpace.rgb,model:ColorModel.spot, colorValue: [197, 69, 252]});

gradient.gradientStops[0].stopColor = color1; // Rot
gradient.gradientStops[0].location = 0;
gradient.gradientStops[1].stopColor = color2; // Gelb
gradient.gradientStops[1].location = 33;
gradient.gradientStops[2].stopColor = color3; // Grün
gradient.gradientStops[2].location = 66;
gradient.gradientStops[3].stopColor = color4; // Blau
gradient.gradientStops[3].location = 100;

_auswahl.fillColor = gradient;


Das funktioniert soweit auch. Allerdings möchte ich hinterher die erstellten Farbfelder löschen.
Per Skript kann ich die Felder auch löschen dann wird aber mein Farbverlauf "schwarz".
Lösche ich die Farbfelder manuell, bleibt mein Farbverlauf erhalten.

Jemand eine Idee, woran das liegt?
X

Verlauf per Skript erstellen

MarioF
Beiträge gesamt: 406

25. Jun 2025, 17:15
Beitrag # 2 von 11
Beitrag ID: #589736
Bewertung:
(2595 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Frage mich, warum das Farbfeld gelöscht werden muss…


als Antwort auf: [#589735]

Verlauf per Skript erstellen

tsone
Beiträge gesamt: 104

25. Jun 2025, 17:23
Beitrag # 3 von 11
Beitrag ID: #589737
Bewertung:
(2589 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mario,

gelöscht werden müssen die Farbfelder nicht zwingend. Ich habe es nur gerne aufgeräumt und wundere mich, warum es manuell funktioniert, per Skript aber nicht.


als Antwort auf: [#589736]

Verlauf per Skript erstellen

Thomas Richard
Beiträge gesamt: 19444

30. Jun 2025, 13:23
Beitrag # 4 von 11
Beitrag ID: #589741
Bewertung:
(1397 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das Farbfeld ermöglicht die globale Änderung dieser einen Farbe und damit in allen Vorkommen dieser Farbe im Dokument. Das Erstellen des Verlaufs per Skript macht ja nur dann wirklich Sinn, wenn es regelmäßig und/oder mehrfach zum Einsatz kommt, gerade dann wäre eine globale Editierung wünschenswert, falls die Farbe mal ( z.B. wegen abweichender Ausgabebedingungen) zu verändern ist.

Oder ist es vielmehr so, dass dein CI diesen Verlauf benötigt, dann solltest du ihn evtl. nicht zwingend per Skript aber eben nur einmalig bei ungeöffnetem Dokument anlegst, dann wird dieser Verlauf in die Defaultfarben/-Verläufe übernommen und steht bei jedem geöffneten Dokument oder an diesem Rechner neu erstellten Dokument als Farbverlauf zur Verfügung.


als Antwort auf: [#589737]
(Dieser Beitrag wurde von Thomas Richard am 30. Jun 2025, 13:25 geändert)

Verlauf per Skript erstellen

Uwe Laubender
Beiträge gesamt: 5360

30. Jun 2025, 13:33
Beitrag # 5 von 11
Beitrag ID: #589742
Bewertung:
(1384 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo tsone,
teste mal mit folgendem Skript BEVOR Du die Farbe per Hand löschst:

Code
var beforeArray = app.documents[0].colors.everyItem().getElements(); 
alert( "Anzahl der Farben:" +"\r"+ beforeArray.length );


Dann lösche die Farbe per Hand.
Und dann lässt Du das Skript noch einmal laufen.

Wie hat sich die Anzahl der Farben verändert?

Wiederhole den Test per Skript.


als Antwort auf: [#589737]

Verlauf per Skript erstellen

tsone
Beiträge gesamt: 104

30. Jun 2025, 14:06
Beitrag # 6 von 11
Beitrag ID: #589743
Bewertung:
(1360 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

ich habe dein Script mal getestet.
Vor dem manuellen Löschen zeigt es 18 Farben an, nach dem Löschen sind es 21.

Per Skript ist es 18:14

Weißt du, wie das zustande kommt?


als Antwort auf: [#589742]
(Dieser Beitrag wurde von tsone am 30. Jun 2025, 14:16 geändert)

Verlauf per Skript erstellen

tsone
Beiträge gesamt: 104

30. Jun 2025, 14:13
Beitrag # 7 von 11
Beitrag ID: #589744
Bewertung:
(1355 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Das Farbfeld ermöglicht die globale Änderung dieser einen Farbe und damit in allen Vorkommen dieser Farbe im Dokument. Das Erstellen des Verlaufs per Skript macht ja nur dann wirklich Sinn, wenn es regelmäßig und/oder mehrfach zum Einsatz kommt, gerade dann wäre eine globale Editierung wünschenswert, falls die Farbe mal ( z.B. wegen abweichender Ausgabebedingungen) zu verändern ist.

Oder ist es vielmehr so, dass dein CI diesen Verlauf benötigt, dann solltest du ihn evtl. nicht zwingend per Skript aber eben nur einmalig bei ungeöffnetem Dokument anlegst, dann wird dieser Verlauf in die Defaultfarben/-Verläufe übernommen und steht bei jedem geöffneten Dokument oder an diesem Rechner neu erstellten Dokument als Farbverlauf zur Verfügung.


Hallo Thomas,

mir geht es primär darum, einfach Verläufe in InDesign zu erstellen, wenn ich diese zum Beispiel in deinem Webeditor oder Photoshop erstellt habe. Ich kann komischerweise keine Verläufe aus PS oder Ai, die in CC Libraries gespeichert sind, in InDesign einfügen.
Hatte schon mit dem Adobe Support gechattet, dort konnte mir aber auch nicht geholfen werden.

Habe ich zumindest schon mal so gemacht, dass der Verlauf mit den Farben in eine Farbgruppe einsortiert werden. Wie das dann produktiv eingesetzt wird, muss sich dann ergeben.

Hab auch schon überlegt, das über Snippets zu lösen.


als Antwort auf: [#589741]

Verlauf per Skript erstellen

WernerPerplies
Beiträge gesamt: 2820

30. Jun 2025, 15:45
Beitrag # 8 von 11
Beitrag ID: #589745
Bewertung:
(1313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin tsone,

ich vermute mal, dass Du beim manuellen Löschen das jeweilige Farbfeld durch ein unbenanntes Farbfeld ersetzt.

Damit verschwindet Deine Farbe aus dem Panel und wird durch eine Farbe mit gleichen Werten ohne Namen ersetzt.

Du kannst so überprüfen:
Code
gradient.gradientStops[?].stopColor.colorValue 

Code
gradient.gradientStops[?].stopColor.name 


Beim Löschen per Skript müssest Du also Dein Farbfeld entsprechend ersetzen:
Code
color?.remove("unbenanntes Farbfeld") 


Ich wüsste aber nicht, wie da der richtige Parameter heißen könnte.


als Antwort auf: [#589743]

Verlauf per Skript erstellen

tsone
Beiträge gesamt: 104

1. Jul 2025, 06:50
Beitrag # 9 von 11
Beitrag ID: #589746
Bewertung:
(1047 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

das klingt einleuchtend. Tatsächlich bekomme ich beim manuellen Löschen die Abfrage, durch welche Farbfelder ich die gelöschten ersetzen möchte.
Danke für den Hinweis!

Wahrscheinlich werde ich das mit den Farbgruppen und Snippets weiterverfolgen.
Wenn ich über die Bibliotheken die Verläufe verwalten könnte, wäre noch einfacher. Aber keine Ahnung, warum das bei mir nicht funktioniert.


als Antwort auf: [#589745]

Verlauf per Skript erstellen

WernerPerplies
Beiträge gesamt: 2820

1. Jul 2025, 10:47
Beitrag # 10 von 11
Beitrag ID: #589747
Bewertung:
(871 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin tsone,

wenn Du keine bessere Lösung findest, hier ein Vorschlag als Blaupause:

Vorbereitung:
Erzeuge in einer neuen Datei Seitenobjekte mit den gewünschten Farbverläufen.
Gebe jeden Seitenobjekt den Namen des Farbverlaufes (geht wohl nur per Skript).
Lösche die verwendeten Farben manuell.
Speichere die erzeugte Datei (hier MeineFarbfelder.indd);

Öffne diese Datei bei Bedarf (geht auch in dem folgenden Skript)

Öffne und aktiviere die zu bearbeitende Datei.

Baue die Funktion aus diesem Skript in Dein Skript ein:
Code
main(); 
/*Void*/function main(){
try{
var /*Document*/docSource = app.documents.itemByName("MeineFarbfelder.indd"),
/*Document*/docWork = app.activeDocument,
/*Gradient*/gradient = importGradient("mein Verlauf", docSource, docWork);
} catch (error){
alert(error);
}
/*Gradient*/function importGradient(/*String*/gradientName, /*Document*/docSource, /*Document*/docWork){
try{
// needed pageitems must be named with with gradient name
var /*PageItem*/pageItem = docSource.pageItems.itemByName(gradientName),
/*Gradient*/gradient = null;
if (pageItem.isValid){
// duplicate pageItem to docWork
pageItem = pageItem.duplicate(docWork.pages[0]);
gradient = pageItem.fillColor;
if ((gradient.isValid) && (gradient.constructor.name === "Gradient")){
// no longer required
pageItem.remove();
} else{
gradient = null;
}
} else {
// errorhandling
}

} catch (error){
throw error
}
return gradient;
}
}



als Antwort auf: [#589746]

Verlauf per Skript erstellen

tsone
Beiträge gesamt: 104

1. Jul 2025, 11:45
Beitrag # 11 von 11
Beitrag ID: #589748
Bewertung:
(841 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

besten Dank für deine Mühe!
Ich schaue mir das mal in Ruhe an.


als Antwort auf: [#589747]
X