Печать страниц с разными параметрами
Листинг 18.10. Печать страниц с разными параметрами
import j ava.awt.*;
import j ava.awt.print.*;
public class Print2Book{
public static void main(String[]
args){
PrinterJob pj = PrinterJob.getPrinterJob();
// Для титульного листа выбирается альбомная ориентация
PageFormat pfl = pj.defaultPage();
pfl.setOrientation(PageFormat.LANDSCAPE);
// Параметры других страниц задаются в диалоговом окне
PageFormat pf2 = pj.pageDialog (new PageFormat());
Book bk = new Book();
// Первая страница — титульный лист
bk.append(new Cover(), pfl);
// Две другие страницы
bk.append(new Content(), pf2, 2);
// Определяется вид печати — Pageable Job
pj.setPageable(bk);
if (pj.printDialog()){
try{
pj.print() ;
}catch (Exception e){}
}
System.exit(0);
}
}
class Cover implements Printable{
public int print(Graphics g, PageFormat pf, int ind)
throws PrinterException{
g.setFont (new Font ("Helvetica-Bold", Font.PIiAIsN, 40)) ;
g.setColor(Color.black) ;
int у = (int) (pf.getlmageableY() +
pf.getlmageableHeigbt() /2);
g.drawstring("Это заголовок,", 72, у);
g.drawstring("Он печатается вдоль длинной", 72, у+60);
g.drawstring("стороны листа бумаги.", 72, у+120);
return Printable.PAGE_EXISTS;
}
}
class Content implements Printable{
public int print(Graphics g, PageFormat pf, int ind)
throws PrinterException{
Graphics2D g2 = (Graphics2D)g;
g2.setFont(new Font("Serif", Font.PLAIN, 12));
g2.setColor(Color.black);
int x = (int)pf .getlmageableXO + 30;
int у = (int)pf.getlmageableY();
g2.drawstring("Это строки обычного текста.", х, у += 16);
g2.drawstring("Они печатаются с параметрами,", х, у += 16);
g2.drawstring("выбранными в диалоговом окне.", х, у += 16);
return Printable.PAGE_EXISTS;
}
}