3. Формирование изображения для печати
Хотя рисование на графическом контексте принтера ничем не отличается от рисования на графическом контексте экрана, и при этом используются те же методы и классы,
однако в процессе подговки изображения для принтера важно учитывать размеры и расположение области печати.
В противном случае часть изображения, не уместившаяся в области печати, просто обрежется и потеряется при печати.
Для определения размеров листа необходимо использовать следующие методы класса
PrintJob
:
public Dimension getPageDimension()
- определяет размеры листа в пикселах, что удобно при рисовании на графическом контексте принтера;
public int getPageResolution()
- определяет "разрешение" листа в пикселах на дюйм. Надо иметь в виду, что такое разрешение не имеет отношения к физическому разрешению принтера.
Пример использующий данные методы:
SimplePageInfo.java.
Результаты работы этого примера приведены ниже:
Большинство принтеров при печати оставлят поля на листе, образующиеся в силу особенностей механики конкретного принтера, не позволяющих подвести печатающую
головку к самому краю листа.
Поля принтера могут отличаться друг от друга по размеру, т. е. не обязательно, чтобы верхнее поле было равно нижнему, а правое левому.
Конкретные размеры полей зависят от марки принтера. Определить размеры этих полей с помощью классов и методов Java 1.0 API невозможно.
Соответствующие классы и методы появились в Java 1.2 API и будут рассмотрены ниже.
Дополнительные затруднения при печати спомощью Java 1.0 API представляет отсутствие возможности определить ориентацию листа при печати.
В окне принтерного диалога пользователь может выбрать различную ориентацию бумаги: "книжную" (Portrait) или "альбомную" (Landscape),
отличающиеся направлениями координатных осей при печати.
В Java 1.2 API существуют методы, позволяющие определить выбранное пользователем направление печати (ориентацию бумаги).