public int print( Graphics g, PageFormat pf, int iPage )
throws PrinterException
{
final int FONTSIZE = 12;
final double PNT_MM = 25.4 / 72.;
int i_max_seiten=0;
try {
int iPosX = 1;
int iPosY = 1;
int h = FONTSIZE * 3/2 * iResMul;//Zeilenhöhe
int a = h/10;
int iWdth = (int)Math.round( pf.getImageableWidth() * iResMul ) - 3;
int iHght = (int)Math.round( pf.getImageableHeight() * iResMul ) - 3;
int i_max_zeilen = ((iHght-iPosY)/h)-2;
i_max_seiten = puffer.length/i_max_zeilen;
//wenn Seite weniger 1
while(i_max_seiten*i_max_zeilen < puffer.length)
i_max_seiten++;
//--------------------
int iCrcl = Math.min( iWdth, iHght ) - 4 * iResMul;
Graphics2D g2 = (Graphics2D)g;
prjob = ((PrinterGraphics)g2).getPrinterJob();
g2.translate( pf.getImageableX(), pf.getImageableY() );
g2.scale( 1.0 / iResMul, 1.0 / iResMul );
g2.setFont( new Font( "SansSerif", Font.PLAIN, FONTSIZE * iResMul ) );
g2.setColor(Color.lightGray);
g2.fillRect(iPosX, iPosY, iWdth, h );
g2.setColor(Color.black);
g2.drawString("Index",iPosX+a,iPosY+h-(h/5));
g2.drawLine(iPosX+((iWdth/18)),iPosY,iPosX+((iWdth/18)),iHght);
g2.drawString("Name",iPosX+((iWdth/18))+a,iPosY+h-(h/5));
g2.drawLine(iPosX+((iWdth/18)*5),iPosY,iPosX+((iWdth/18)*5),iHght);
g2.drawString("Von",iPosX+((iWdth/18)*5)+a,iPosY+h-(h/5));
g2.drawLine(iPosX+((iWdth/18)*8),iPosY,iPosX+((iWdth/18)*8),iHght);
g2.drawString("Bis",iPosX+((iWdth/18)*8)+a,iPosY+h-(h/5));
g2.drawLine(iPosX+((iWdth/18)*11),iPosY,iPosX+((iWdth/18)*11),iHght);
g2.drawString("Ferienobjekt",iPosX+((iWdth/18)*11)+a,iPosY+h-(h/5));
g2.drawLine(iPosX+((iWdth/18)*14),iPosY,iPosX+((iWdth/18)*14),iHght);
g2.drawString("Preis/€",iPosX+((iWdth/18)*14)+a,iPosY+h-(h/5));
g2.drawLine(iPosX+((iWdth/18)*16),iPosY,iPosX+((iWdth/18)*16),iHght);
g2.drawString("Gesamt/€",iPosX+((iWdth/18)*16)+a,iPosY+h-(h/5));
for(int i=0,k=0;i<i_max_zeilen && i+iPage*i_max_zeilen<puffer.length;i++)
{
for(int j=0;j<7;j++)
{
if(j ==0)
k = 0;
else if(j ==1)
k = 1;
else if(j ==2)
k = 5;
else if(j ==3)
k = 8;
else if(j ==4)
k = 11;
else if(j ==5)
k = 14;
else if(j ==6)
k = 16;
if(puffer[i+iPage*i_max_zeilen][j] == null)
g2.drawString("",((iWdth/18)*k)+a,iPosY+(h*(i+2))-(h/5));
else
g2.drawString(""+puffer[i+iPage*i_max_zeilen][j],((iWdth/18)*k)+a,iPosY+(h*(i+2))-(h/5));
g2.drawLine(iPosX,iPosY+(h*(i+2)),iWdth,iPosY+(h*(i+2)));
}
}
} catch( Exception ex ) {
throw new PrinterException( ex.getMessage() );
}