Zum Inhalt springen

Windows-Druck Dialog anstelle vom Java-Druck-Dialog


Empfohlene Beiträge

Geschrieben

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.

ss1.PNG

Lieben Gruß

Hitrix

Geschrieben (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 von Jogibaer0411
Geschrieben

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);

            }

Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...