Класс 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

КонстантаРазмер (мм)КонстантаРазмер (мм)КонстантаРазмер (мм)
A0841 x 1189B01030 x 1456B1032 x 45
A1594 x 841B1728 x 1030C5E163 x 229
A2420 x 594B2515 x 728Comm10E105 x 241
A3297 x 420B3364 x 515DLE110 x 220
A4210 x 297B4257 x 364Executive191 x 254
A5148 x 210B5182 x 257Folio210 x 330
A6105 x 148B6128 x 182Ledger432 x 279
A774 x 105B791 x 128Legal216 x 356
A852 x 74B864 x 91Letter216 x 279
A937 x 52B945 x 64Tabloid279 x 432

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

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

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

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

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

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



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

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