Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Dokument-Legende mit Skript erstellen

Dokument-Legende mit Skript erstellen

BoWi
Beiträge gesamt: 1

22. Okt 2014, 12:17
Bewertung:

gelesen: 3083

Beitrag als Lesezeichen
Hallo Zusammen,

ein Kunde fordert von mir, dass ich in jedem Dokument im Infobereich eine Legende einsetzen soll, in der die relevanten Jobinfos eingetragen sind.

Dies würde ich gerne über ein Skript lösen, welches mir eine Dialog-Box, ein Fenster oder eine Palette breitstellt in der ich die Informationen eintragen kann und per Button automatisch in der Infoleiste platziert (mal einfach formuliert ;-).

Da ich ein absoluter Skript-Neuling bin, bin ich auf Hilfe von Profis angewiesen.

Folgendes (Teil)Skript habe ich mit meinem jetzigen Wissenstand über Skripting hinbekommen:

#target InDesign

main()
exit()

function main() {
var mydialog = app.dialogs.add({name:"Auftragsinformationen"});
var min_width_left = 0;
var min_width_right = 300;
with (mydialog) {
with (dialogColumns.add() ) {
staticTexts.add( {staticLabel: "Job-Nummer:", minWidth: min_width_left} );
staticTexts.add( {staticLabel: "Kunde:", minWidth: min_width_left} );
staticTexts.add( {staticLabel: "Job-Name:", minWidth: min_width_left} );
staticTexts.add( {staticLabel: "Motiv:", minWidth: min_width_left} );
staticTexts.add( {staticLabel: "Phase:", minWidth: min_width_left} );
staticTexts.add( {staticLabel: "Version:", minWidth: min_width_left} );
staticTexts.add( {staticLabel: "Datum:", minWidth: min_width_left} );
staticTexts.add( {staticLabel: "Operator:", minWidth: min_width_left} );
}
with (dialogColumns.add() ) {
var JobNummer = textEditboxes.add({editContents: "", minWidth: min_width_right});
var Kunde = textEditboxes.add({editContents: "", minWidth: min_width_right});
var JobName = textEditboxes.add({editContents: "", minWidth: min_width_right});
var Motiv = textEditboxes.add({editContents: "", minWidth: min_width_right});
var Phase = textEditboxes.add({editContents: "", minWidth: min_width_right});
var Version = textEditboxes.add({editContents: "", minWidth: min_width_right});
var Datum = textEditboxes.add({editContents: "", minWidth: min_width_right});
var Operator = textEditboxes.add({editContents: "", minWidth: min_width_right});
}
}

mydialog.show()
}

Leider hört jetzt auch mein Wissen hier auf und ich bin dringend auf Eure Hilfe angewiesen.
Wer kann mir zu folgenden Skript-Anforderungen Unterstützung, Hilfe und Erklärungen geben???

Das fertige Skript soll folgendes "können":

- dauerhaft in InDesign als Fenster, Bedienfeld, DialogBox oder Palette zur Verfügung stehen
- immer nur für ein aktives Dokument anwendbar
- ausfüllbar
- OK-Button der beim Klicken einen Textrahmen im Infobereich mit denm Inhalt der ausgefüllten Felder erstellt (Felder sind in meinem Skript definiert).
- Textrahmen soll einen bestimmten Look haben (Absatzformate, Tabelle, Aufteilung)
- Dokument darf sich nicht schließen lassen bis das Feld ausgefüllt ist.

Optional (sofern möglich):

- Skript übernimmt aus dem Separationsfenster die Farbwerte und Farbnamen und trägt diese ebenfalls in den Textrahmen ein.

Puuuuh!!! Ganz schön heftig für einen absoluten Anfänger...

Wer kann mir helfen???

Grüße BoWi

Dokument-Legende mit Skript erstellen

mx
Beiträge gesamt: 161

23. Okt 2014, 11:25
Bewertung:

gelesen: 2981

Beitrag als Lesezeichen
Hallo BoWi,

so vom Ansatz her würde ich folgendes probieren:

Einen Infobereich vollständig gestalten und die zu füllenden Felder als Textvariablen anlegen.
Diesen Infobereich dann als Snippet exportieren (Auswählen und dann Datei -> Exportieren) und bei Bedarf jeweils in die betroffenen Dokumente einfügen (Datei -> Platzieren).

In deinem Script musst Du dann noch nach dem mydialog.show() die Eingaben im Dialog in die Textvariablen schreiben, z.B. über

Code
app.activeDocument.textVariables.itemByName("JobNummer").variableOptions.contents = JobNummer.editContents; 


Die Textvariable sollte also auch "JobNummer" heißen, damit das klappt.

Wenn Du noch prüfen willst, ob eine Textvariable überhaupt existiert, geht das mit
Code
app.activeDocument.textVariables.itemByName("Variable 17").isValid 

Dabei kommt true oder false heraus.

Viele Grüße
Jo