Drucken: Default Paper von Drucker? Mein Drucker druckt falsch

beta20

Top Contributor
Hallo zusammen,

ich möchte den Druck in Java realisieren.
Das funktioniert auch soweit. Nun habe ich aber ein Problem, dass das Bild, das ich drucken möchte nicht der Größe entspricht, die ich gerne haben möchte.
Ich möchte die volle Größe des Bildes ausgedruckt haben.

Als Drucker verwende ich einen Fotodrucker, der in meinen Eigenschaften des Druckers von Windows folgendes Druckformat (Verfügbares Papier) hat: (4x6).
4x6 entspricht: 102 x 152x mm

Anbei mein Code:

Code:
   // Standard Drucker
           PrintService defaultPrintService = PrintServiceLookup
               .lookupDefaultPrintService();

           // Create the print job
           FileInputStream myPicture = new FileInputStream(printStorage.getStorageAttachment().getFullPath());
           DocFlavor formatSTREAM = DocFlavor.INPUT_STREAM.JPEG;

           PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
          aset.add(new JobName("Test.jpg", Locale.getDefault()));
       
           DocAttributeSet dset = new HashDocAttributeSet();
          dset.add(new DocumentName("Test.jpg", Locale.getDefault()));
       
           DocPrintJob printJob = defaultPrintService.createPrintJob();
           Doc doc = new SimpleDoc(myPicture, formatSTREAM, dset);
       
           // Drucken
           printJob.print(doc, aset);

Wenn ich den Code debugge, dann erhalte ich bei "defaultPrinterService" als:

Code:
mediaSizeNames = null
mediaPrintables = null
mediaSizes = null

Wie schaffe ich es, dass das Bild in voller Auslösung (also über das ganze Papier) gedruckt wird? Derzeit wird das Bild in der Mitte unten gedruckt und ist nicht einmal vollständig drauf.

Danke für Hilfen
 
Zuletzt bearbeitet:
Ich habe mit unten stehenden Code mal die verfügbaren Papierformate des Druckers ausgegeben:
Ich bekomme hier aber nur:
(5x7): width: 131.0; height: 181
(6x8): width: 156,1; height: 206
(6x9): width: 156.1; height: 231


Code:
PrintService printService =PrintServiceLookup.lookupDefaultPrintService();
Media[] res =(Media[]) printService.getSupportedAttributeValues(Media.class,null,null);
for(Media media : res){
    if(media instanceofMediaSizeName){
        MediaSizeName msn =(MediaSizeName) media;
        MediaSize ms =MediaSize.getMediaSizeForName(msn);
        float width = ms.getX(MediaSize.INCH);
        float height = ms.getY(MediaSize.INCH);
        System.out.println(media +": width = "+ width +"; height = "+ height);
    }
}

Wie bekomme ich dann (6x4) ???
Warum wird dies nicht aufgelistet??????
 
Hast Du mal probiert, die Größe zu setzen? (Bei PrintRequestAttributSet müsste das dann rein)

Nein, habe es mit new MediaSize(100, 100, mm)... versucht, aber hat nicht geklappt.
Habe ich etwas falsch gemacht?!

Ich habe jetzt spasseshalber mal DIN A4 definiert, dann funktioniert es bei meinem Drucker und spuckt die volle Große aus.
Aber wie wird es bei anderen Druckern sein....?

Code:
// Standard Drucker
                    PrintService defaultPrintService = PrintServiceLookup
                            .lookupDefaultPrintService();

                    // Create the print job
                    FileInputStream myPicture = new FileInputStream("Test.jpg");
                    DocFlavor formatSTREAM = DocFlavor.INPUT_STREAM.JPEG;
                   
                    // Jobname
                    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
                    aset.add(new JobName("Test.jpg", Locale.getDefault()));
                    aset.add(new Copies(printStorage.getQuantity()));
                   
                    // Immer DIN A4
                    Media media = MediaSize.findMedia(210, 297, Size2DSyntax.MM);
                    aset.add(MediaTray.MANUAL);
                    aset.add(media);
                    aset.add(MediaSizeName.ISO_A4);
                   
                    // Docname (damit nicht "Java Printing beim Ausdruck steht")
                    DocAttributeSet dset = new HashDocAttributeSet();
                    dset.add(new DocumentName(printStorage.getStorageAttachment().getName(), Locale.getDefault()));
                   
                    DocPrintJob printJob = defaultPrintService.createPrintJob();
                    Doc doc = new SimpleDoc(myPicture, formatSTREAM, dset);
                       
                    // Drucken
                    printJob.print(doc, aset);
 

Neue Themen


Zurück
Oben