Click to See Complete Forum and Search --> : Printing without PrintBox using java.awt.print


October 10th, 1999, 11:44 PM
hi ,
I am unable to obtain any printout using the following piece of code.
I am geeting three blank pages without any contents.Can some body tell me why?


[java code]

import java.awt.print.*;
import java.awt.*;
import java.util.*;

class printable extends Frame
{

public static void main(String[] str)
{
printable p = new printable("Ramesh's Printout");
}

printable(String s)
{
super(s);
setSize(400,400);
PrinterJob pj = PrinterJob.getPrinterJob();
Book bk = createBook(pj);
try
{
pj.setPageable(bk);
pj.print();
}
catch(Exception e)
{
System.out.println(e.toString());
System.out.println("Problem in Printable constructor");
}
System.exit(0);
}

Book createBook(PrinterJob p)
{
Book b = new Book();
PageFormat defaultformat = new PageFormat();
defaultformat = p.defaultPage(defaultformat);

PageFormat landscape = new PageFormat();
landscape.setOrientation(PageFormat.LANDSCAPE);

PagePrinter[] pp = new PagePrinter[1];


int pwidth = (int) defaultformat.getImageableWidth();
int pheight = (int) defaultformat.getImageableHeight();
Font font = new Font("Helvetica",Font.BOLD,18);

pp[0] = new PagePrinter();
pp[0].addPrintElement(new PrintElement("This is Page1",font,100,100));


pp[1] = new PagePrinter();
pp[1].addPrintElement(new PrintElement("This is Page2",font,150,150));


pp[2] = new PagePrinter();
pp[2].addPrintElement(new PrintElement("This is Page3",font,200,200));
b.append(pp[0],defaultformat);
b.append(pp[1],defaultformat);
b.append(pp[2],defaultformat);

return b;
}

class PagePrinter implements Printable
{
Vector v;
PagePrinter()
{
v = new Vector();
}

public void addPrintElement(PrintElement pe)
{
v.addElement(pe);
}

public int print(Graphics g,PageFormat p,int Index)
{
Enumeration e = v.elements();
while(e.hasMoreElements())
{
System.out.println("entered print of Printable");
PrintElement pet = (PrintElement) e.nextElement();
pet.print(g);

}
return Printable.PAGE_EXISTS;
}
}

class PrintElement
{
String string;
int x,y;
Font ft;
PrintElement(String ar,Font f,int xpos,int ypos)
{

this.string = ar;
//System.out.println(string);
this.x = xpos;
this.y = ypos;
this.ft = f;
}

public void print(Graphics g)
{
Font oldfont = g.getFont();
g.setFont(ft);
//System.out.println(string);
g.drawString(string,x,y);
g.setFont(oldfont);
}
}
}
[/java code]