Иллюстрированный самоучитель по Java

Печать средствами Java 2D

Можно задать параметры страницы и из программы, но тогда следует сначала определить объект класса Paper конструктором по умолчанию:

Paper р = new Paper()

Затем методами:

p.setSize(double width, double height)
p.setlmageableArea(double x, double y, double width, double height)

…задать размер страницы и области печати.

Потом определить объект класса pageFormat с параметрами по умолчанию:

PageFormat pf = new PageFormat()

…и задать новые параметры методом:

pf.setPaper(p)

Теперь вызывать на экран окно Параметры страницы методом pageDialogo уже не обязательно, и мы получим молчаливый (silent) процесс печати. Так делается в тех случаях, когда печать выполняется на фоне отдельным подпроцессом.

Итак, параметры страницы определены, метод print о – тоже. Теперь надо дать задание на печать (print job) – указать количество страниц, их номера, порядок печати страниц, количество копий. Все эти сведения собираются в классе Printer Job.

Система печати Java 2D различает два вида заданий. В более простых заданиях – Printable Job – есть только один класс, рисующий страницы, поэтому у всех страниц одни и те же параметры, страницы печатаются последовательно с первой по последнюю или с последней страницы по первую, это зависит от системы печати.

Второй, более сложный вид заданий – Pageable Job – определяет для печати каждой страницы свой класс, рисующий страницы, поэтому у каждой страницы могут быть собственные параметры. Кроме того, можно печатать не все, а только выбранные страницы, выводить их в обратном порядке, печатать на обеих сторонах листа. Для осуществления этих возможностей определяется экземпляр класса Book или создается класс, реализующий интерфейс Pageable.

В классе Book, опять-таки, один конструктор, создающий пустой объект:

Book b = new Book()

После создания в данный объект добавляются классы, рисующие страницы. Для этого в классе Book есть два метода:

  • append (Printable p, PageFormat pf) – добавляет объект р в конец;
  • append(Printable p, PageFormat pf, int numPages) – добавляет numPages экземпляров р в конец; если число страниц заранее неизвестно, то задается константа UNKNOWN_NUMBER_OF_PAGES.

При составлении задания на печать, т. е. после создания экземпляра класса PrinterJob, надо указать вид задания одним и только одним из трех методов этого класса setPrintable(Printable pr), setPrintable(Printable pr, PageFormat pf) или setPageble (Pageable pg). Заодно задаются один или несколько классов рг, рисующих страницы в этом задании.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.