Hitrix Geschrieben 31. Januar 2011 Geschrieben 31. Januar 2011 Hallo zusammen, mich würde intressieren wie ich anstelle von dem DruckDialog von Java den Standard-Dialog von Windows zum Drucken nutzen kann. Mein Problem ist folgendes: Ich habe einen Barcode der als Image in Java zur Verfügung steht. Wenn ich diesen nun mit einem PrinterJob drucken möchte geht der Java-Druck-Dialog auf und wenn ich nun mit "Drucken" bestätige, gibt mir der Druckertreiber eine Fehlermeldung aus, dass das Format nicht passt. Wenn ich jedoch als Drucker den XPS Drucker auswähle und das XPS dann mit dem Internet Explorer öffne und drucke funktioniert alles einwanfrei. Ich hoffe ihr könnt mir weiterhelfen anbei noch ein paar Screenshots um das Problem zu verdeutlichen. Die Einstellungen hab ich bereits gecheckt und irgendwie kann man nichts einstellen, dass das Format angepasst wird. Lieben Gruß Hitrix Zitieren
Mttkrb Geschrieben 1. Februar 2011 Geschrieben 1. Februar 2011 (bearbeitet) Hallo, selbst wenn es funktionieren sollte, so bleibt dann das Problem, dass du dich auf ein Betriebssystem festlegst. MacOS, Linux, ... sind dann nicht mehr funktionsfähig. Hast du das Papierformat in Java richtig angegeben? Welche Klassen nnutzt du zum Drucken in Java? Teilweise ist es etwas gewöhnungsbedürftig. Folgender Link hatte mir damals geholfen. javax.print.attribute (Java Platform SE 6) Das Format lässt sich dort auch relativ leich einstellen. Gruß Jogibaer0411 Bearbeitet 1. Februar 2011 von Jogibaer0411 Zitieren
Hitrix Geschrieben 1. Februar 2011 Autor Geschrieben 1. Februar 2011 Also so sieht der Code im Moment aus: public class PrintTest implements Printable { public int print(Graphics g, PageFormat pf, int pageNr) { if (pageNr==1) return NO_SUCH_PAGE; BufferedImage image; try { image = ImageIO.read(new File("out.png")); g.setColor(Color.black); g.setFont(new Font("Times", Font.PLAIN, 47)); //g.drawImage(image, 0, 0, 200, 1060, null); g.drawImage(image, 0, 0, null); } catch (IOException ex) { Logger.getLogger(BarcodeView.class.getName()).log(Level.SEVERE, null, ex); } return PAGE_EXISTS; } } try { //Create the barcode bean EAN13Bean bean = new EAN13Bean(); final int dpi = 150; //Configure the barcode generator bean.setModuleWidth(UnitConv.in2mm(2.0f / dpi)); //makes the narrow bar //width exactly one pixel bean.setBarHeight(10); bean.doQuietZone(false); //Open output file File outputFile = new File("out.png"); OutputStream out; out = new FileOutputStream(outputFile); //Set up the canvas provider for monochrome PNG output BitmapCanvasProvider canvas = new BitmapCanvasProvider(out, "image/x-png", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 90); // 200x 10 //Generate the barcode bean.generateBarcode(canvas, "234567891231"); //Signal end of generation canvas.finish(); System.out.println("width:" + canvas.getBufferedImage().getData().getWidth()); System.out.println("height:" + canvas.getBufferedImage().getData().getHeight()); out.close(); PrinterJob pj = PrinterJob.getPrinterJob(); pj.setPrintable(new PrintTest()); pj.printDialog(); try { pj.print(); } catch (PrinterException pe) { } } catch (IOException ex) { Logger.getLogger(BarcodeView.class.getName()).log(Level.SEVERE, null, ex); } Zitieren
Dragon8 Geschrieben 4. Februar 2011 Geschrieben 4. Februar 2011 Ich habe jetzt nur mal kurz über den Code drüber gelesen und wie es mir aussieht, hast du den Tipp von Jogibaer0411 nicht eingefügt. Da die Fehlermeldung deines Druckers aber schon darauf schließen lässt, dass das Problem wirklich mit deinen Einstellungen zum Format zusammenhängt, würde ich das bei dir im Code am besten mal anpassen. Zitieren
Mttkrb Geschrieben 4. Februar 2011 Geschrieben 4. Februar 2011 Hi, Wenn du bei deinem Code bleiben möchtest. Hast du schonmal die Methode p1.setpageable() versucht? Gruß Jogibaer0411 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.