This Java tip demonstrates a method of printing pages with different formats. Printing may be done in landscape or in portrait. Here the tip demonstrates an example of printing the first page in landscape and five more pages in portrait.

  public class PrintBook {

        public static void main(String[] args) {
        
            PrinterJob printtaskjob = PrinterJob.getPrinterJob();
            Book book = new Book();
    
            // Landscape
            PageFormat landscape = printtaskjob.defaultPage();
            landscape.setOrientation(PageFormat.LANDSCAPE);
            book.append(new Printable1(), landscape);
    
            // Portrait
            PageFormat portrait = printtaskjob.defaultPage();
            portrait.setOrientation(PageFormat.PORTRAIT);
            book.append(new Printable2(), portrait, 5);
    
            printtaskjob.setPageable(book);
            try {
                printtaskjob.print();
            } catch (PrinterException e) {
            }
        }
        
        static class Printable1 implements Printable {
            public int print(Graphics g, PageFormat pf, int pageIndex) {
                drawGraphics(g, pf);
                return Printable.PAGE_EXISTS;
            }
        }
        
        static class Printable2 implements Printable {
            public int print(Graphics g, PageFormat pf, int pageIndex) {
                drawGraphics(g, pf);
                return Printable.PAGE_EXISTS;
            }
        }
    }