Hallo,
ich hab ein Problem das ich einfach nicht verstehe. Ich hab ein kleines Kassenprogramm geschrieben. Funktioniert alles Super. Allerdings musste man bei jedem Druck den Drucker auswählen was ein unnötiger klick ist. Allerdings sofern ich den PrinterJob.printDialog() aufgerufen hab war alles OK
Suche ich mir aber den Drucker über dessen Namen und setzte ihn so:
PrinterJob.setPrintService(<PrintService>). kommt das raus
gut ich dachte mir setzte ich einfach mal das Papierformat indem ich eine neue Page mit dem richtigen Formaten anlege, das hat dann nur den 0 Punkt verschoben und sonst nichts. Ich hab weiterhin so etwa was wie ein großer Rand aussieht.
Der zwischen Versuch war nach dem zuweisen des Druckers mit PrinterJob.setPrintService(<PrintService>) noch mal den printDialog() aufzurufen -> auch alles OK.
Also irgend etwas ändert der Print Dialog was ich nicht verstehe oder über Google finden konnte (suche vermutlich nach dem falschen).
Auch die unterschiede beim Papier sind auffällig
OK sind das diese Werte (Btw. ziel ist A5)
ImageableX: 0.0
Imageable width: 419.52
Bei dem Monster Rand diese:
ImageableX: 72.0
Imageable width: 276.0094488188976
2x72+276=420 Also zumindest halbwegs richtig.
Hier noch etwas Code...alles unwichtige hab ich rausgelassen
Ich hoffe jemand hat einen Tipp oder die Lösung. Vor allem verstehe ich nicht wieso es so unterschiedliche Ergebnisse sind durch den Druck Dialog.
ich hab ein Problem das ich einfach nicht verstehe. Ich hab ein kleines Kassenprogramm geschrieben. Funktioniert alles Super. Allerdings musste man bei jedem Druck den Drucker auswählen was ein unnötiger klick ist. Allerdings sofern ich den PrinterJob.printDialog() aufgerufen hab war alles OK
Suche ich mir aber den Drucker über dessen Namen und setzte ihn so:
PrinterJob.setPrintService(<PrintService>). kommt das raus
gut ich dachte mir setzte ich einfach mal das Papierformat indem ich eine neue Page mit dem richtigen Formaten anlege, das hat dann nur den 0 Punkt verschoben und sonst nichts. Ich hab weiterhin so etwa was wie ein großer Rand aussieht.
Der zwischen Versuch war nach dem zuweisen des Druckers mit PrinterJob.setPrintService(<PrintService>) noch mal den printDialog() aufzurufen -> auch alles OK.
Also irgend etwas ändert der Print Dialog was ich nicht verstehe oder über Google finden konnte (suche vermutlich nach dem falschen).
Auch die unterschiede beim Papier sind auffällig
OK sind das diese Werte (Btw. ziel ist A5)
ImageableX: 0.0
Imageable width: 419.52
Bei dem Monster Rand diese:
ImageableX: 72.0
Imageable width: 276.0094488188976
2x72+276=420 Also zumindest halbwegs richtig.
Hier noch etwas Code...alles unwichtige hab ich rausgelassen
Java:
public PrintIt (ArrayList<QuittungsEintrag> liste, ProgrammLogik pl){
this.liste=liste;
this.pl=pl;
job = PrinterJob.getPrinterJob();
try {
job.setPrintService(pl.getPrintService("FreePDF"));
} catch (PrinterException e1) { }
job.setPrintable(this);
//wie gesagt rufe ich den Code mit dem printDialog() hier auf klappt alles
// if (job.printDialog() == true) {
try {
job.print();
pl.saveFile();
} catch (PrinterException e){};
// }
}
Java:
public int print(Graphics gx, PageFormat pf, int page)
throws PrinterException {
//Hier waren nur die Versuche mit dem Papierformat etwas zu erreichen
// Paper tp=new Paper();
// tp.setImageableArea(0, 0, 420, 594);
// tp.setSize(420, 594);
//
// pf.setPaper(tp);
if (page>0){
return NO_SUCH_PAGE;
}
Graphics2D g=(Graphics2D)gx;
g.translate(pf.getImageableX(),pf.getImageableY());
printheader(g,0,0);
printTabelle(g,0,130);
printFooter(g,0,430);
return PAGE_EXISTS;
}
Ich hoffe jemand hat einen Tipp oder die Lösung. Vor allem verstehe ich nicht wieso es so unterschiedliche Ergebnisse sind durch den Druck Dialog.