Книга не работала для меня на примере с несколькими страницами (в результате была напечатана только первая страница), но она дала мне другую идею. Вместо:
Book book = new Book();//java.awt.print.Book
book.append(this, pf);
job.setPageable(book);
Я попробовал другой перегруженный метод, и он работал для всех страниц:
PageFormat pf = job.defaultPage();
pf.setPaper(paper);
job.setPrintable(this, pf);
Если вам нужен нестандартный размер бумаги, вам нужно переслать его в метод print в качестве аргумента (что Java сделает для вас, но вы должны передать его в метод setPrintable). Изменение PaperFormat после запуска метода будет влиять только на вторую и последующие страницы или вообще не повлиять.
В любом случае, спасибо вам обоим.