# Grafiken mit Java im richtigen Format drucken



## gschmi01 (26. Aug 2007)

Hallo Leute

Java verwendet beim Drucken das Raster 1/72-Inch (0,353mm). Druckt man damit eine Grafik aus, so verwendet Java dieses Raster entsprechend der Pixelauflösung der Grafik. Dadurch werden die Grafiken größer ausgedruckt, da sie meistens eine feinere Auflösung haben, z.B. 200 dpi anstelle von 72 dpi.

Kann mir jemand schreiben (eventuell mit Codezeilen), wie man dieses Problem behebt?
Danke vorab.

gschmi01


----------



## André Uhres (26. Aug 2007)

http://www.java-forum.org/de/viewtopic.php?p=226877#226877


----------



## gschmi01 (26. Aug 2007)

Hallo

Danke für den Link. Wahrscheinlich hast Du die Codezeilen
    Graphics2D g2d = (Graphics2D)g; 
    g2d.scale(0.5d, 0.5d);
gemeint, die mir helfen sollten.

Ich habe die Skalierung bereits versucht. Damit erreicht man aber eine Skalierung des gesamten Grafikkontextes und nicht nur die Bereiche, in denen Bilddaten ausgedruckt werden sollen. Ich kann in dieser Maßnahme leider noch keine Lösung meines Problems entdecken.

Daher die Problembeschreibung noch etwas genauer:
Ich habe einen Grafikkontext (Graphics2D), in den ich die Texte für eine A4-Seite hineinschreibe. Dazu sollen an bestimmten X/Y-Positionen zusätzlich Grafiken ausgedruckt werden. Java wendet die Rasterung 1/72-Inch auf die Pixelabmessungen der Grafiken an und druckt sie zu groß. Die Auflösung der Grafiken in DPI (unterschiedlich von Bild zu Bild) werden nicht berücksichtigt.

Wäre fein, wenn es doch noch eine Lösung gäbe.

Viele Grüße


----------



## gschmi01 (1. Sep 2007)

Hallo

Eine perfekte Lösung zum Drucken von Grafiken mit unterschiedlichen DPI-Auflösungen auf einer Seite habe ich bis jetzt noch nicht gefunden, dafür aber einen brauchbaren "Work-around". Er basiert auf Andre's Link und der Skalierung von Schriften:

Alle zu druckenden Grafiken neu aufbauen (Resampling in einem Grafikprogramm), wobei am einfachsten ein ganzzahliges Vielfaches von 72 dpi gewählt wird. Ich habe 288 dpi = 4x72 dpi genommen.

In der Methode print(Graphics g, ... ):

Graphics2D g2 = (Graphics2D) g;                        // Cast auf Graphics2D anwenden
g2.scale(1.0/SCALE, 1.0/SCALE);                        // Auflösung vergrößern, bei mir ist SCALE = 4
...                                                                     // Eine Grafik als BufferedImage laden
g2.drawImage(image, null, x1, y1);                     // Die Grafik ausdrucken
...
g2.setFont(new Font(TYPE, STYLE, SIZE*SCALE)); // Font mit skalierter Zeichengröße
g2.drawString(zeile, x2, y2);                               // Skalierten Text ausdrucken

Viele Grüße


----------

