Шаг 248.
Библиотека Qt.
Класс QPrinter

    На этом шаге рассмотрим вывод на печать в Qt.

    В большинстве случаев приложения должны предоставлять пользователю возможность вывода на печать. Это обстоятельство может испугать многих разработчиков, и причиной тому является ряд проблем: различные возможности принтеров, разница в отображении шрифтов на экране и принтере, платформозависимые различия в программировании принтеров и т. д. Qt берет на себя решение большинства задач, существенно облегчая задачу разработчиков.

    Класс QPrinter является основным для вывода на печать. Благодаря тому, что класс унаследован от QPaintDevice, вывод на печать аналогичен выводу на экран. Для вывода на принтер могут применяться те же методы класса QPainter, что и для всех остальных контекстов рисования.

    Класс принтера QPrinter обладает большим числом настроек, чем все остальные классы, унаследованные от класса QPaintDevice. Можно, например, установить размер листа, количество копий и т. д. Qt предоставляет диалоговое окно печати, в котором пользователь сам выполняет необходимые настройки. Это окно реализовано в классе QPrintDialog Эти настройки можно проводить и программно:

Таблица 1. Перечисления PageSize класса QPrinter
Константа
Размер (мм)
Константа
Размер (мм)
Константа
Размер (мм)
A0
841 x 1189
B0
1030 x 1456
B10
32 x 45
A1
594 x 841
B1
728 x 1030
C5E
163 x 229
A2
420 x 594
B2
515 x 728
Comm10E
105 x 241
A3
297 x 420
B3
364 x 515
DLE
110 x 220
A4
210 x 297
B4
257 x 364
Executive
191 x 254
A5
148 x 210
B5
182 x 257
Folio
210 x 330
A6
105 x 148
B6
128 x 182
Ledger
432 x 279
A7
74 x 105
B7
91 x 128
Legal
216 x 356
A8
52 x 74
B8
64 x 91
Letter
216 x 279
A9
37 x 52
B9
45 x 64
Tabloid
279 x 432

    Вместо печати на принтер можно перенаправить вывод в файл. Для этого необходимо передать полное имя файла методу setOutputFileName(). Если в метод передать пустую строку, то перенаправление вывода в файл будет проигнорировано, и вывод будет осуществлен на печатающее устройство. Имя печатаемого файла можно установить методом setDocName(); отметим, что это не имя файла, в который перенаправлена печать, а имя задания на печать.

    Кроме перенаправления печати в файл, который содержит команды принтера, можно генерировать файлы в формате PDF (Portable Document Format, платформонезависимый формат электронных документов), и это так же просто, как и вывод на печать: нужно передать в метод setOutputFormat() значение QPrinter::PdfFormat.

    Класс QPrinter содержит метод setFontEmdeddingEnabled() для внедрения шрифтов в документ-носитель, для того чтобы быть уверенным, что полученный файл содержит все необходимые шрифты. Это полезно в том случае, если вы хотите использовать файлы не только на той платформе, на которой они были созданы.

    Чтобы отменить операцию печати, нужно вызвать метод abort(), который вернет значение булевого типа, сигнализирующее о результате выполнения операции отмены.

    На следующем шаге рассмотрим пример приложения, осуществляющего печать страницы.




Предыдущий шаг Содержание Следующий шаг