hilfdirselbst.ch
Facebook Twitter gamper-media
cwenet S
Beiträge: 855
6. Okt 2013, 18:55
Beitrag #1 von 14
Bewertung:
(3402 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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
Top

Anhang:
rgb.idml (29.0 KB)
 
X
pixxxelschubser p
Beiträge: 1538
6. Okt 2013, 19:18
Beitrag #2 von 14
Beitrag ID: #518148
Bewertung:
(3386 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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.

viele Grüße
pixxxelschubser




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

Isaac Newton


als Antwort auf: [#518147] Top
 
Gerald Singelmann  M  p
Beiträge: 6178
6. Okt 2013, 19:19
Beitrag #3 von 14
Beitrag ID: #518149
Bewertung:
(3381 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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.

--------------------------

InDesign-Wissen und Automatisierung nicht nur rund um die Suite.

http://www.cuppascript.com
als Antwort auf: [#518147] Top
 
cwenet S
Beiträge: 855
6. Okt 2013, 19:47
Beitrag #4 von 14
Beitrag ID: #518153
Bewertung:
(3355 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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
als Antwort auf: [#518149]
(Dieser Beitrag wurde von cwenet am 6. Okt 2013, 19:50 geändert)
Top
 
pixxxelschubser p
Beiträge: 1538
6. Okt 2013, 19:53
Beitrag #5 von 14
Beitrag ID: #518154
Bewertung:
(3348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


Gut, wenn es jetzt funktioniert.

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

Wink

viele Grüße
pixxxelschubser




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

Isaac Newton


als Antwort auf: [#518153]
(Dieser Beitrag wurde von pixxxelschubser am 6. Okt 2013, 20:00 geändert)
Top
 
cwenet S
Beiträge: 855
6. Okt 2013, 20:02
Beitrag #6 von 14
Beitrag ID: #518155
Bewertung:
(3320 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


[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?
als Antwort auf: [#518154]
(Dieser Beitrag wurde von cwenet am 6. Okt 2013, 20:08 geändert)
Top
 
pixxxelschubser p
Beiträge: 1538
6. Okt 2013, 20:16
Beitrag #7 von 14
Beitrag ID: #518157
Bewertung:
(3311 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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.)

viele Grüße
pixxxelschubser




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

Isaac Newton


als Antwort auf: [#518155] Top
 
cwenet S
Beiträge: 855
6. Okt 2013, 20:19
Beitrag #8 von 14
Beitrag ID: #518158
Bewertung:
(3305 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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

Schönen Abend
Christoph
als Antwort auf: [#518157] Top
 
Gerald Singelmann  M  p
Beiträge: 6178
6. Okt 2013, 20:41
Beitrag #9 von 14
Beitrag ID: #518159
Bewertung:
(3277 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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

--------------------------

InDesign-Wissen und Automatisierung nicht nur rund um die Suite.

http://www.cuppascript.com
als Antwort auf: [#518158] Top
 
pixxxelschubser p
Beiträge: 1538
6. Okt 2013, 21:52
Beitrag #10 von 14
Beitrag ID: #518160
Bewertung:
(3234 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


Wink
als Antwort auf: [#518159] Top
 
Kai Rübsamen  M  p
Beiträge: 4457
6. Okt 2013, 22:13
Beitrag #11 von 14
Beitrag ID: #518162
Bewertung:
(3218 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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
_______________________
als Antwort auf: [#518160] Top
 
cwenet S
Beiträge: 855
8. Okt 2013, 18:07
Beitrag #12 von 14
Beitrag ID: #518231
Bewertung:
(3085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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
als Antwort auf: [#518162] Top
 
Kai Rübsamen  M  p
Beiträge: 4457
8. Okt 2013, 19:02
Beitrag #13 von 14
Beitrag ID: #518232
Bewertung:
(3068 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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
_______________________
als Antwort auf: [#518231] Top
 
cwenet S
Beiträge: 855
8. Okt 2013, 19:16
Beitrag #14 von 14
Beitrag ID: #518234
Bewertung:
(3062 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Tabellenzellen Hintergrund Farbe in RGB konvertieren (CS6, WIN)


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
als Antwort auf: [#518232] Top
 
X