Guten Abend
mit folgendem Code wird mir ein JPanel grafisch korrekt ausgedruckt, wenn es MediaSizeName.ISO_A4; ist.
Habe ich irgendwo im Netz gefunden... (habe ein paar Zeilen eingefügt um zu verstehen was wo gerechnet wird)
setzte ich aber MediaSizeName.ISO_C5;, dann ist die Position pageFormat.getImageableX() (Zeile 24) iwo bei -150 bis -200px
Ich verstehe die Logik nicht vom obigen Code...
MediaSizeName.ISO_C5; sind Couverts die im "Mehrzweck Papierfach" eingelegt sind (portrait, PageFormat.PORTRAIT; wurde gesetzt.)
Habs auch schon mit PageFormat.LANDSCAPE; versucht! Ohne Erfolg.
In der Höhe passt alles, nur Horizontal fängt er iwo bei -150 bis -200px an.
Wenn mir das mal Jemand erklären könnte, wäre super! 😄
Vielen Dank.
PS:
Meine SysOuts ergeben:
mit folgendem Code wird mir ein JPanel grafisch korrekt ausgedruckt, wenn es MediaSizeName.ISO_A4; ist.
Habe ich irgendwo im Netz gefunden... (habe ein paar Zeilen eingefügt um zu verstehen was wo gerechnet wird)
Java:
private Printable prnt = new Printable() {
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
double gBreite, gHoehe;
double faktorW = 0.0;
double faktorH = 0.0;
if ( pageIndex > 0 ) { //if ( pageIndex > 0 ) {
return(NO_SUCH_PAGE);
} else {
//Skalierung*******************************
gBreite = pageFormat.getImageableWidth();
gHoehe = pageFormat.getImageableHeight();
faktorW = gBreite / druckKomponente.getWidth();
faktorH = gHoehe / druckKomponente.getHeight();
System.out.println("druckKomponente.getWidth() = "+druckKomponente.getWidth());
System.out.println("druckKomponente.getHeight() = "+druckKomponente.getHeight());
System.out.println(".getImageableX() = "+pageFormat.getImageableX());
System.out.println(".getImageableY() = "+pageFormat.getImageableY());
System.out.println("------------------------------------------------------------------\n");
//*****************************************
Graphics2D g2d = (Graphics2D)graphics;
g2d.translate( pageFormat.getImageableX(), pageFormat.getImageableY() );
g2d.scale( faktorW, faktorH );
disableDoubleBuffering( druckKomponente );
druckKomponente.paint( g2d );
enableDoubleBuffering( druckKomponente );
return(PAGE_EXISTS);
}
}
};
......
}
Ich verstehe die Logik nicht vom obigen Code...
MediaSizeName.ISO_C5; sind Couverts die im "Mehrzweck Papierfach" eingelegt sind (portrait, PageFormat.PORTRAIT; wurde gesetzt.)
Habs auch schon mit PageFormat.LANDSCAPE; versucht! Ohne Erfolg.
In der Höhe passt alles, nur Horizontal fängt er iwo bei -150 bis -200px an.
Wenn mir das mal Jemand erklären könnte, wäre super! 😄
Vielen Dank.
PS:
Meine SysOuts ergeben:
druckKomponente.getWidth() = 850
druckKomponente.getHeight() = 596
.getImageableX() = 6.947208000000103
.getImageableY() = 5.2501679999999995
Zuletzt bearbeitet: