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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...