[GastForen Programme Print/Bildbearbeitung Adobe InDesign JavaScript, Grep, underlineColor bearbeiten

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

JavaScript, Grep, underlineColor bearbeiten

andreas131
Beiträge gesamt: 24

28. Okt 2008, 12:21
Beitrag # 1 von 11
Bewertung:
(5184 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

bin dabei mir ein JavaScript für Suche/Ersetze in InDesign CS3 zu schreiben. Damit ich die vom Script geänderten Stellen in meinem Testdokument angezeigt bekomme, möchte ich diese gerne mit einer Hinterlegung hervorheben.

Leider kann ich bei "underlineColor" nur "Black" oder "Paper" angeben, nicht aber eine bereits definiertes Farbfeld, z.B. "rot".

Was muss ich für "underlineColor" angeben, damit mein vorhandenes Farbfeld "rot" angewendet wird?

Code
//Change 
with(app.changeGrepPreferences){
underline=true;
underlineWeight=12;
underlineOffset=-4;
underlineColor="Black"; //Swatch??
underlineTint=20;
}

Vielen Danke für eure Hilfe!

Grüße
Andreas


Windows XP, InDesign CS3

(Dieser Beitrag wurde von andreas131 am 28. Okt 2008, 12:23 geändert)
X

JavaScript, Grep, underlineColor bearbeiten

Marc Sidon
Beiträge gesamt: 262

28. Okt 2008, 14:28
Beitrag # 2 von 11
Beitrag ID: #372218
Bewertung:
(5169 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Andreas,

Du musst den Swatch mitgeben, nicht den Names des Swatch!

Also eher so:

Code
//Change  
with(app.changeGrepPreferences){
underline=true;
underlineWeight=12;
underlineOffset=-4;
underlineColor=myDocument.swatches.itemByName ("rot");
underlineTint=20;
}


Gruß,
Marc


als Antwort auf: [#372181]

JavaScript, Grep, underlineColor bearbeiten

Martin Fischer
  
Beiträge gesamt: 12783

28. Okt 2008, 14:35
Beitrag # 3 von 11
Beitrag ID: #372222
Bewertung:
(5164 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

> Du musst den Swatch mitgeben, nicht den Names des Swatch!

Aber nicht 'myDocument.swatches.itemByName ("rot")'. ;-)

Hier gibt es einen Bug in InDesign CS3.
Beim Suchen/Ersetzen lässt sich das Farbfeld eines Dokuments nicht addressieren.

Workaround:
Das Farbfeld, das im Dokument bereits vorhanden ist, auch auf Programmebene erzeugen, dann in der Suche-Ersetze-Funktion verwenden und anschließend wieder löschen (auf Applikationsebene, nicht auf Dokumentebene).


als Antwort auf: [#372218]

JavaScript, Grep, underlineColor bearbeiten

Marc Sidon
Beiträge gesamt: 262

28. Okt 2008, 14:59
Beitrag # 4 von 11
Beitrag ID: #372233
Bewertung:
(5157 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Na gut,
wenn da ein Bug ist, dann geht es so nicht... :)
Sonst ginge es aber!

Dann halt so wie Du gesagt hast:

Code
var myDocument = app.activeDocument; 
var mySwatch = myDocument.swatches.itemByName ("rot");
var myAppSwatch = app.swatches.itemByName("rot");
var deleteAgain1 = false;

if (myAppSwatch == null) {
myAppSwatch = app.colors.add(mySwatch.properties);
deleteAgain1 = true;
}

with(app.changeGrepPreferences){
underline=true;
underlineWeight=12;
underlineOffset=-4;
underlineColor=myAppSwatch;
underlineTint=20;
}


... und dann irgendwo am Ende wieder löschen...

Code
if (deleteAgain1)  
myAppSwatch.remove();


Marc


als Antwort auf: [#372222]
(Dieser Beitrag wurde von Marc Sidon am 28. Okt 2008, 14:59 geändert)

JavaScript, Grep, underlineColor bearbeiten

Martin Fischer
  
Beiträge gesamt: 12783

28. Okt 2008, 15:52
Beitrag # 5 von 11
Beitrag ID: #372245
Bewertung:
(5147 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

Dein Code zum workaround gefällt mir besser als alle meine eigenen Lösungen.
Deswegen reiß' ich mir den jetzt klammheimlich unter den Nagel und tu' so, als sei ich selber schlau. ;-)


als Antwort auf: [#372233]

JavaScript, Grep, underlineColor bearbeiten

andreas131
Beiträge gesamt: 24

28. Okt 2008, 17:12
Beitrag # 6 von 11
Beitrag ID: #372263
Bewertung:
(5123 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
hallo Marc,

Wow ... das ist genial! Vielen Dank für die schnelle und ausführliche Antwort.

Da habe ich ewig rumprobiert mit myDoc.swatches ... OK ein Bug ... das beruhigt mich wieder etwas :)).

Dann versuche ich mich in der Umsetzung.

Danke + Grüße
Andreas


als Antwort auf: [#372233]

JavaScript, Grep, underlineColor bearbeiten

andreas131
Beiträge gesamt: 24

28. Okt 2008, 19:01
Beitrag # 7 von 11
Beitrag ID: #372297
Bewertung:
(5104 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Danke für die Hilfe. Funktioniert prima!

Code
//js InDesign 5.0  
//Findet Text (Suche Text) und unterstreicht diesen

var myFindText = "Suche Text"; // Text or RegExp

var myDocument = app.activeDocument;

//Create a color.
try{
myDocument.colors.item("rot").name;
}
catch (myError){
myDocument.colors.add({name:"rot", model:ColorModel.process, colorValue:[0, 100, 100, 0]});
}

var mySwatch = myDocument.swatches.itemByName ("rot");
var myAppSwatch = app.swatches.itemByName("rot");

var deleteAgain1 = false;

if (myAppSwatch == null) {
myAppSwatch = app.colors.add(mySwatch.properties);
deleteAgain1 = true;
}

resetSearchOptions ()

//Search
app.findGrepPreferences.findWhat = myFindText;

with(app.changeGrepPreferences){
underline=true;
underlineWeight=12;
underlineOffset=-4;
underlineColor=myAppSwatch;
underlineTint=20;
}

//Do change
app.activeDocument.changeGrep();

//resetSearchOptions ()
resetSearchOptions ()

//if (deleteAgain1)
if (deleteAgain1){
myAppSwatch.remove();
myDocument.swatches.item(-1).remove(mySwatch); //Farbfeld auch aus der Farbpalette löschen
}

function resetSearchOptions (){
//find/change text preferences
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
//find/change grep preferences
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
}


Die Farbe die in die INDD-Einstellung übergeben wurde erscheint auch in der Farbpalette. Um die noch zu löschen habe ich eine Zeile ergänzt:

Code
if (deleteAgain1){ 
myAppSwatch.remove();
myDocument.swatches.item(-1).remove(mySwatch); //Farbfeld auch aus der Farbpalette löschen
}


Hoffe, das damit die richtige Farbe gelöscht wird :)

Grüße
Andreas


als Antwort auf: [#372233]

JavaScript, Grep, underlineColor bearbeiten

Marc Sidon
Beiträge gesamt: 262

28. Okt 2008, 20:06
Beitrag # 8 von 11
Beitrag ID: #372304
Bewertung:
(5093 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich verstehe nicht ganz, warum Du die Farbe zuerst im Dokument anlegst, um sie dann (wegen dem Bug) in der Anwendung anzulegen um sie dann anschliessend wieder zu löschen..... Hmmm....

Ich dachte, die Farbe existiert bereits im Dokument.

Du kannst die Farbe auch einfach in der Application erstellen um sie dann zu nutzen! Sie wird dann automatisch auch im Dokument angelegt, wenn Du die gefundenen Wörter hinterlegst.

Aber warum löschst Du dann am Schluss die Farbe aus dem Dokument?

Wenn Du sie aus dem Dokument auch löschst, dann sind die Wörter doch auch nicht mehr in der Farbe hinterlegt !?!?!?
*wunder*

Gruß,
Marc

P.S.:
@Martin: mich wundert zwar, dass Dir ausnahmsweise mein Code gefällt, aber Du kannst ihn gerne übernehmen...
*grins*


als Antwort auf: [#372297]

JavaScript, Grep, underlineColor bearbeiten

andreas131
Beiträge gesamt: 24

29. Okt 2008, 11:47
Beitrag # 9 von 11
Beitrag ID: #372358
Bewertung:
(5040 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

bei mir wurde in den Farbfelder jeweils ein weiteres Farbfeld "rot1" oder "rot2" zugefügt.

Vielleicht habe ich irgendwas vermurxst.

Vielleicht wird das Farbfeld in den Farbfeldern angelegt, wenn es in die Voreinstellungen von Indesign übergeben wird. Oder die Farbe wird hinzugefügt weil beim Testen das Script gelegentlich nicht vollständig ausgeführt wurde.

Ich schau mir das später genauer an und gebe Bescheid. Alleine die Farbe zuweisen zu können ist super ...

Grüße
Andreas


als Antwort auf: [#372304]

JavaScript, Grep, underlineColor bearbeiten

Quarz
Beiträge gesamt: 3555

29. Okt 2008, 15:20
Beitrag # 10 von 11
Beitrag ID: #372384
Bewertung:
(5023 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Andreas,

von Hans Häsler gibt es ein Script
›Mehrfachfarbfelder entfernen‹.

http://www.fachhefte.ch/java_scripts/windows_d/

Du bist also nicht der Einzige, dem das passiert.

Gruß
Quarz

------------------------
WinXP | CS3


als Antwort auf: [#372358]

JavaScript, Grep, underlineColor bearbeiten

andreas131
Beiträge gesamt: 24

12. Nov 2008, 12:12
Beitrag # 11 von 11
Beitrag ID: #374266
Bewertung:
(4864 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

entschuldige, dass ich erst jetzt antworte.

Du hast vollkommen recht. Die Zeile

Code
myDocument.swatches.item(-1).remove(mySwatch); //Farbfeld auch aus der Farbpalette löschen 


muss aus dem Script gelöscht werden.

Da ist mir beim Test ein Fehler unterlaufen.

Dein Skript läuft prima.

Grüße
Andreas


als Antwort auf: [#372304]
X