Anzeige:
Ergebnis 1 bis 8 von 8

Thema: ImageIcon nach Druck unscharf

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52

    ImageIcon nach Druck unscharf

    Hallo Leute,
    ich hoffe mir kann hier jemand helfen. Und zwar muss ich eine Druckansicht
    für bestimmte Daten anfertigen. Jetzt habe ich das ganze einfach als JPanel gemacht und drucke dies dann mittels java.awt.print.* aus. Allerdings habe ich ein Logo auf der Seite und wenn ich dieses als ImageIcon einbinde auf der Seite, wird das Logo auf dem Ausdruck etwas pixelig und unscharf.

    Wie kann ich dies verhindern?

    Hier ein Ausschnitt aus dem Code, wie ich das Icon einbinde:
    Code:
    private static final String ICON_URL = "logo.jpg";
    private ImageIcon icon = new ImageIcon(ICON_URL);
    JLabel iconLabel = new JLabel(icon);
    iconLabel.setPreferredSize(new Dimension(30,30));
    pageToPrint.add(iconLabel);
    Hiermit drucke ich das ganze JPanel:
    Code:
    package report;
    
    import java.awt.*;
    import javax.swing.*;
    
    import java.awt.print.*;
    
    public class PrintSuit implements Printable {
    	private Component compToPrint;
    
    	public static void printComponent(Component comp) {
    		new PrintSuit(comp).print();
    	}
    
    	private PrintSuit(Component comp) {
    		this.compToPrint = comp;
    	}
    
    	public void print() {
    		PrinterJob printJob = PrinterJob.getPrinterJob();
    		printJob.setPrintable(this);
    		if(printJob.printDialog())
    			try {
    				printJob.print();
    			} catch (PrinterException pex) {
    				pex.printStackTrace();
    			}
    	}
    
    	public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
    		if(pageIndex > 0) {
    			return (NO_SUCH_PAGE);
    		} else {
    			int x = (int) pageFormat.getImageableX() + 1;
    			int y = (int) pageFormat.getImageableY() + 1;
    			g.translate(x, y);
    			RepaintManager currentManager = RepaintManager.currentManager(compToPrint);
    			currentManager.setDoubleBufferingEnabled(false);
    			compToPrint.paint(g);
    			currentManager.setDoubleBufferingEnabled(true);
    			return (PAGE_EXISTS);
    		}
    	}
    }

  2. #2
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Ich denke, das passiert durch das preferred size. Versuch mal das Logo in der gewünschten Größe mittels ImageMagick resize zu erstellen und dann zu drucken. Ist es noch immer verschwommen?

    Wenn nicht, dann kannst du das Logo entweder nehmen oder es dynamisch mittels dem Wrapper in Java von ImageMagick dynamisch zu resizen. Die Bildbearbeitung in Java ist eher schwach.

    mfg, christian
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  3. #3
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    schau Dir mal iText an (http://www.lowagie.com/iText/), das ist ein Konverter nach PDF, kommt auch mit eingebetteten Grafiken klar. Damit ersparst Du Dir den Weg über ein JPanel. Ich habe damit gute Erfahrungen gemacht.

    Jan

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52
    Zitat Zitat von waxolunist
    Ich denke, das passiert durch das preferred size. Versuch mal das Logo in der gewünschten Größe mittels ImageMagick resize zu erstellen und dann zu drucken. Ist es noch immer verschwommen?

    Wenn nicht, dann kannst du das Logo entweder nehmen oder es dynamisch mittels dem Wrapper in Java von ImageMagick dynamisch zu resizen. Die Bildbearbeitung in Java ist eher schwach.

    mfg, christian
    Werde ich mal versuchen, aber viel Hoffnung habe ich da nicht.

    Zitat Zitat von jan61 Beitrag anzeigen
    Moin,

    schau Dir mal iText an (http://www.lowagie.com/iText/), das ist ein Konverter nach PDF, kommt auch mit eingebetteten Grafiken klar. Damit ersparst Du Dir den Weg über ein JPanel. Ich habe damit gute Erfahrungen gemacht.

    Jan
    Das habe ich mir schon angeschaut, allerdings kam ich damit nicht so gut klar. Ich weiss nicht, wie ich die ganzen Elemente so positionieren kann. Das ist mit nem JPanel schon einfacher. Allerdings will ich das direkt ausdrucken und nicht als PDF bekommen. Kann ich mir denn damit ein JPanel erstellen und dann so wie es auf dem Bildschirm angezeigt wird ausdrucken, bzw als PDF konvertieren?

  5. #5
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von tybalt0125 Beitrag anzeigen
    Das habe ich mir schon angeschaut, allerdings kam ich damit nicht so gut klar. Ich weiss nicht, wie ich die ganzen Elemente so positionieren kann. Das ist mit nem JPanel schon einfacher. Allerdings will ich das direkt ausdrucken und nicht als PDF bekommen. Kann ich mir denn damit ein JPanel erstellen und dann so wie es auf dem Bildschirm angezeigt wird ausdrucken, bzw als PDF konvertieren?
    Zum Weg über JPanel kann ich nichts sagen. Die Positionierung der Elemente geht aber eigentlich aus den reichlichen Beispielen gut hervor. Man muss nur im Hinterkopf behalten, dass man immer von unten links anfängt und die Elemente auch an ihrer Unterkante ausrichtet.

    Jan

  6. #6
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52
    Zitat Zitat von jan61 Beitrag anzeigen
    Zum Weg über JPanel kann ich nichts sagen. Die Positionierung der Elemente geht aber eigentlich aus den reichlichen Beispielen gut hervor. Man muss nur im Hinterkopf behalten, dass man immer von unten links anfängt und die Elemente auch an ihrer Unterkante ausrichtet.

    Jan
    Also ich habe jetzt gesehen, das ich einfach mein JPanel in das PDF Dokument zeichnen kann, per paint. Allerdings weiss ich noch nicht, ob es dann besser aussieht. Kann ich das PDF Dokument auch direkt drucken, ohne das ich es vorher als Datei speicher?

    @waxolunist
    Das mit dem vorher anpassen hat nicht funktioniert, es liegt wohl daran, das ich das JPanel resizen muss, damit es auf genau auf eine Seite passt.

  7. #7
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von tybalt0125 Beitrag anzeigen
    Kann ich das PDF Dokument auch direkt drucken, ohne das ich es vorher als Datei speicher?
    Ich kenne dafür keine Methode, vielleicht geben die Examples was her?

    Jan

  8. #8
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52
    Zitat Zitat von jan61 Beitrag anzeigen
    Ich kenne dafür keine Methode, vielleicht geben die Examples was her?

    Jan
    Ich meine darüber nichts gefunden zu haben, aber ich schau gleich nochmal rüber. Werde mich sowieso ein bisschen mehr damit befassen. Danke für eure Hilfe

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •