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:
Hiermit drucke ich das ganze JPanel: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);
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); } } }
Lesezeichen