Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

cwenet
Beiträge gesamt: 1139

6. Okt 2013, 18:55
Bewertung:

gelesen: 4372

Beitrag als Lesezeichen
Guten Tag,

mit folgendem Script versuche ich allen Tabellenzellen bei denen die Hintergrundfarbe Schwarz verwendet wurde nach RGB zu wandeln:

Code
   var alleZellen = app.documents.firstItem().stories.everyItem().tables.everyItem().cells.everyItem().getElements();   
for ( var i = 0; i < alleZellen.length; i++ ){
if ( alleZellen[i].fillColor.name == "Black" )
alleZellen[i].fillColor.space = ColorSpace.rgb
}


Siehe bitte in angehängtem Dokument.
In der oberen Tabelle sind graue Zellen mit Schwarz in CMYK gefärbt.
Das Soll-Ergebnis zeigt die untere Tabelle. Dort wurde lediglich der Farbraum verändert.
Obiges Script gibt eine Fehlermeldung aus: Diese Farbe kann nicht bearbeitet werden.
Die Farbe selber soll ja unberührt bleiben. Ich wünsche nur einen anderen Farbraum.

Bitte um Hilfe.
Gruss
Christoph

Anhang:
rgb.idml (29.0 KB)

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

pixxxelschubser
Beiträge gesamt: 1708

6. Okt 2013, 19:18
Bewertung:

gelesen: 4356

Beitrag als Lesezeichen
Hallo cwenet,
zuerst eine kleine Nachfrage:
Warum nutzt du keine Farbtonfelder?

Meiner Ansicht nach gibt es keine Möglichkeit, den Farbraum einer Zellenfarbe zu ändern.

Am sinnvollsten wird es sein, zuerst ein RGB-Farbfeld anzulegen. Und danach den Farbton deiner Zellfarben auszulesen. Ist diese Farbe == "Black", dann lies den Farbton aus – in etwa so:

Code
   var alleZellen = app.documents.firstItem().stories.everyItem().tables.everyItem().cells.everyItem().getElements();    
for ( var i = 0; i < alleZellen.length; i++ ){
if ( alleZellen[i].fillColor.name == "Black" ) {
alert(alleZellen[i].fillTint)
//alleZellen[i].fillColor.space = ColorSpace.rg
}
}


Hast du einen Treffer, dann ersetze die Hintergrundfarbe mit dem RGB-Schwarz oder dem entsprechenden RGB-Schwarz-Farbtonfeld (das du dann ebenfalls noch anlegen müsstest)

Vielleicht ist das ja ein gangbarer Weg für dich.


Wink
Viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton


Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

Gerald Singelmann
  
Beiträge gesamt: 6269

6. Okt 2013, 19:19
Bewertung:

gelesen: 4351

Beitrag als Lesezeichen
Zitat Die Farbe selber soll ja unberührt bleiben. Ich wünsche nur einen anderen Farbraum.


Dieser Satz ergibt keinen Sinn.
"Am Bundeskanzler soll sich nichts ändern. Sie soll nur Manuela heißen."

Der Farbaum ist eine Eigenschaft der Farbe, nicht der Zelle.
Die Farbe ist dann der Zelle zugewiesen.
Wenn die Zelle RGB sein soll, muss eine (neue) RGB-Farbe erstellt werden, die der Zelle zugewiesen wird.

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

cwenet
Beiträge gesamt: 1139

6. Okt 2013, 19:47
Bewertung:

gelesen: 4325

Beitrag als Lesezeichen
Zitat Dieser Satz ergibt keinen Sinn.



Danke an Gerald.
Da habe ich mich tatsächlich etwas unglücklich ausgedrückt. :-)

Mit einer neuen Farbe funktioniert es.

Danke auch an pixxxelschubser.

So sieht es jetzt aus:

Code
if (app.documents[0].swatches.itemByName("neueFarbe").isValid != true) { 
var neueFarbe = app.documents[0].colors.add({colorValue: [100, 100,100], space: ColorSpace.RGB, name:'neueFarbe'});
}

var alleZellen = app.documents.firstItem().stories.everyItem().tables.everyItem().cells.everyItem().getElements();
for ( var i = 0; i < alleZellen.length; i++ ){
if ( alleZellen[i].fillColor.name == "Black" ) {
var tint = alleZellen[i].fillTint;
alleZellen[i].fillColor = neueFarbe;
alleZellen[i].fillTint = tint;
}
}


Grund für dieses Vorhaben:
Beim Export nach RTF werden Tabellenzellen mit Hintergrundfarbe "Schwarz" und z.B. 20 % Farbton
in Word dennoch mit 100 % Schwarz angezeigt.


Schönen Abend
Christoph

(Dieser Beitrag wurde von cwenet am 6. Okt 2013, 19:50 geändert)

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

pixxxelschubser
Beiträge gesamt: 1708

6. Okt 2013, 19:53
Bewertung:

gelesen: 4318

Beitrag als Lesezeichen
Gut, wenn es jetzt funktioniert.

Und dass du noch bemerkt hast, dass du in der Schleife alle [i] vergessen hattest.

Wink


Wink
Viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton



(Dieser Beitrag wurde von pixxxelschubser am 6. Okt 2013, 20:00 geändert)

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

cwenet
Beiträge gesamt: 1139

6. Okt 2013, 20:02
Bewertung:

gelesen: 4290

Beitrag als Lesezeichen
[quote]... dass du in der Schleife alle [i] vergessen hattest.[/quote]

Wie meinst Du das?
Die [i]s waren doch da.

Oder habe ich etwas übersehen?

(Dieser Beitrag wurde von cwenet am 6. Okt 2013, 20:08 geändert)

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

pixxxelschubser
Beiträge gesamt: 1708

6. Okt 2013, 20:16
Bewertung:

gelesen: 4281

Beitrag als Lesezeichen
Eventuell hattest du dein Script vor deiner Änderung nicht im Code-Tag eingeschlossen. Dann interpretiert die Forensoftware das [i] als Beginn für kursive Formatierung.

(Um das zu umgehen kann man dem i aber einen Punkt voranstellen. Um ein [i] zu erhalten muss man im normalen Text also [.i] schreiben. Ansonsten verschwindet das [i] und der nachfolgende Text wird kursiv.)


Wink
Viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton


Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

cwenet
Beiträge gesamt: 1139

6. Okt 2013, 20:19
Bewertung:

gelesen: 4275

Beitrag als Lesezeichen
Ah ja, merci.
Habs gerade beim Zitieren gemerkt und habe deshalb auf Textversion umgestellt.

Schönen Abend
Christoph

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

Gerald Singelmann
  
Beiträge gesamt: 6269

6. Okt 2013, 20:41
Bewertung:

gelesen: 4247

Beitrag als Lesezeichen
HDS ist Schuld, dass ich konsequent dazu übergegangen bin, n als Laufvariable zu benutzen.

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

pixxxelschubser
Beiträge gesamt: 1708

6. Okt 2013, 21:52
Bewertung:

gelesen: 4204

Beitrag als Lesezeichen
Wink

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

Kai Rübsamen
Beiträge gesamt: 4684

6. Okt 2013, 22:13
Bewertung:

gelesen: 4188

Beitrag als Lesezeichen
Christoph, bist du dir sicher, dass dein Skript funktioniert? ;-)

Wenn ich mir die exportiere RTF-Variante in Word anschaue, wird dein zugewiesener Farbton bei mir ignoriert und alle Felder mit Ausnahme von dem unten links (unbenanntes Farbfeld) werden wohl als 100/100/100 exportiert.

Bei deiner Variante unten hast du generell unbenannte Farben.

Gruß Kai Rübsamen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

cwenet
Beiträge gesamt: 1139

8. Okt 2013, 18:07
Bewertung:

gelesen: 4055

Beitrag als Lesezeichen
Hallo Kai,

bei mir tut es, wie gewünscht.
Es geht um die obere Tabelle. Wenn ich einen RTF-Export ohne das Script mache,
werden die Zellen (bis auf unten links) in Word 2010 Schwarz gefärbt, so dass
der Text nicht mehr lesbar ist.

Nach dem Script hat die obere Tabelle in allen Zellen die Farbe 100,100,100 (bis auf unten links). Nach dem Export ist dann auch der Text in Word 2010 lesbar.
Der Trick dabei war, dass ich RGB verwende.

Gruss
Christoph

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

Kai Rübsamen
Beiträge gesamt: 4684

8. Okt 2013, 19:02
Bewertung:

gelesen: 4038

Beitrag als Lesezeichen
Hallo Christoph,

ich wusste nicht, dass es dir NICHT auf die unterschiedlichen Farbtöne ankommt. Dann haben wir das gleiche Ergebnis.

Antwort auf: Der Trick dabei war, dass ich RGB verwende.

Ich sag mal vorsichtig: Das glaub ich nicht ;-)

Beweis: In deinem Druckdokument unter Dokument einrichten von Druck auf Web umstellen. Das macht aus CMYK-Schwarz > RGB-Schwarz. Wenn ich hier nach RTF exportiere, ist das nicht die Lösung.

Du hast ganz simpel eine hellere Farbe zugewiesen. Dein zugewiesener Farbton kommt dabei auch nicht im Word-Dokument an. Der Farbraum, also ob RGB oder CMYK scheint egal.

Mir fallen ansonsten noch ein zwei Kleinigkeiten in deinem Code auf. Ich hoffe, ich als Anfänger darf das sagen ;-) Ich wäre jedenfalls froh über jede Verbesserung …

1. Du schreibst mal app.documents[0] und mal 'app.documents.firstItem()', mal 'neueFarbe' oder "Black"

2. Du prüfst am Anfang, ob neueFarbe vorhanden ist. Falls nicht, legst du die Farbe an und gibst das Ergebnis in die Variable. Ist die Farbe aber bereits im Dokument, rennt das Skript in einen Fehler, da es die Variable dann nicht gibt!

Code
var dok = app.documents[0]; 

if (!dok.swatches.item("neueFarbe").isValid) {
var neueFarbe = dok.colors.add({colorValue: [100, 100,100], space: ColorSpace.RGB, name: "neueFarbe"});
}
else {
var neueFarbe = dok.swatches.item("neueFarbe");
}

var alleZellen = dok.stories.everyItem().tables.everyItem().cells.everyItem().getElements();
for ( var n = 0; n < alleZellen.length; n++ ){
var aktuelleZelle = alleZellen[n];
if ( aktuelleZelle.fillColor.name == "Black" ) {
var tint = aktuelleZelle.fillTint;
aktuelleZelle.fillColor = neueFarbe;
aktuelleZelle.fillTint = tint;
}
}


Gruß Kai Rübsamen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)

cwenet
Beiträge gesamt: 1139

8. Okt 2013, 19:16
Bewertung:

gelesen: 4032

Beitrag als Lesezeichen
Hallo Kai,

vielen Dank für die Anpassung des Scripts.
Ich habe es garnicht richtig auf genaue Korrektheit überprüft.

In der Tat, wollte ich nur die Grauwerte für das RTF in etwa simulieren, damit auch der Text
In den Zellen lesbar ist.

Schönen Abend
Christoph