# Image temporär erzeugen und anzeigen?



## Itzamna (26. Jan 2011)

Hallo Zusammen,

ich habe folgendes Grundproblem:
In einem PDM-System existieren verschiedene Produkte die verschiedene Farben haben können. Nun sollen Anwender auf einem Produkt einen Report erstellen können, der in einer Übersichtstabelle alle verfügbaren Farben mit Namen anzeigt und ein kleines Quadrat mit dem RGB-Farbwert ausdruckt. Von der Herstellerfirma wurde das in einer JSP mit CSS gelöst. D.h. die Daten kommen aus der Datenbank und die Anzeige erfolgt so hier:


```
<div style=\"background: RGB(" + intRed + "," + intGreen + "," + intBlue + "); width: 40; position: relative; top:-8px; border=0\">
<img src=\"../common/images/utilSpacer.gif\" width=\"0\" height=\"40\" alt=\"\"/>
</div>
```

Problem hierbei ist: Das Quadrat mit dem Farbwert wird als "background-color" definiert. Im Browser ist standardmäßig die Funktion "Print background color and images" deaktiviert. Im Unternehmen dürfen die Anwender außerdem nach Security-Richtlinen sowieso keine solchen Einstellungen ändern. Ergebnis: Der Code funktioniert super bis zur Druckvorschau. Wird die Seite jedoch ausgedruckt, erscheint nur der Name, aber keine Quadrate mit den RGB-Werten... Da haben die Amis wohl bei der Qualitätskontrolle geschlampt... 
Ich soll das Ganze nun irgendwie zum fliegen bringen, weil es dringend benötigt wird. Anscheinend funktioniert das mit CSS/HTML Mitteln nicht. Daher nun mein Ansatz, das RGB-Bild irgendwie mit Java Boardmitteln temporär zu erzeugen und auf dem Bildschirm anzuzeigen, sodass es der Anwender auf dem ausgedruckten Blatt auch sieht.
Allerdings arbeite ich so selten mit Bildern, dass ich nicht wirklich weiß, wie und ob man das am Besten lösen könnte. Vielleicht gibt es ja auch noch einen anderen Ansatz? Bin für jede Unterstützung dankbar.

Gruß aus der Schweiz,
Itzamna


----------



## JohannisderKaeufer (26. Jan 2011)

Warum keine print css Datei anbieten?

Das sollte die Browser defaults für den Print überschreiben.

Andere Lösungen die mir einfallen sind z.B. die grafiken per svg in einem Servlet zu erstellen, daß den Farbcode übergeben bekommt und auf dieses zu verweisen. SVG muß halt unterstützt werden.

Erzeugt ein rotes Quadrat:
[XML]<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.0"
   width="40"
   height="40"
   id="svg2">
  <defs
     id="defs5" />
  <rect
     width="38"
     height="38"
     x="1"
     y="1"
     style="fill:#ff0000;"
     id="rect1306" />
</svg>
[/XML]

Oder schauen was html5 so alles bietet. Zum Beispiel Canvas.

Das Canvas element an der Stelle an der es gezeichnet werden soll.
[XML]
<canvas id="bild1" width="40" height="40"/>
[/XML]

Etwas JavaScript:

```
function drawBild1(){
	var canvas = document.getElementById('bild1');
	if(canvas.getContext){
		var context = canvas.getContext('2d');
		context.fillStyle = "rgb(255, 0, 0)";
		context.fillRect(0, 0, canvas.width, canvas.height);
	}
}
```

und der Hinweis im Body, das das JS ausgeführt werden soll

```
<body onload="drawBild1()">
```

Die Methode mit dem Canvas ist mein persönlicher Favorit, da es bereits in vielen aktuellen Browsern funktioniert.


----------



## ign0rant (26. Jan 2011)

Mit der Google Chart API kann man dynamisch farbige Bildchen erzeugen:














Ansonsten ginge vielleicht noch ein Div zu nehmen, dem eine dicke Border zu verpassen und die dann mit border-color farbig zu machen. Müsstest du ausprobieren, ob das dann in einem Ausdruck erscheint...


----------

