Класс QPrinter

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

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

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

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

  • при помощи метода setOrientation() можно задать ориентацию страницы, передав флаг QPrinter::Portrait для горизонтального или QPrinter::Landscape для вертикального расположения страницы;
  • метод setNumCopies() устанавливает количество выводимых на печать копий;
  • с помощью метода setFromTo() можно задать диапазон страниц для печати;
  • метод setColorMode() управляет цветным и черно-белым режимами печати. Для цветного режима нужно передать в метод флаг QPrinter::Color, а для черно-белого — QPrinter::Grayscale;
  • вызовом метода setPageSize() изменяется размер листа. В метод нужно передать одно из значений, перечисленных в таблице 1.

Таблица 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(), который вернет значение булевого типа, сигнализирующее о результате выполнения операции отмены.

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

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий