Установка принтера программы и печать
В системе Windows в списке доступных принтеров присутствуют как аппаратные принтеры, так и виртуальные принтеры. Виртуальный принтер работает по принципу драйвера физического принтера, только виртуальный принтер не управляет работой реального принтера. Документ, отправленный на печать виртуальному принтеру, вместо вывода на бумагу, сохраняется в файл формата, который поддерживается виртуальным принтером. В Windows 10 в качестве стандартного виртуального принтера используется Microsoft Print to PDF.
Платформа позволяет осуществлять печать следующих типов форм: отчетов, бланков, табличных форм. Перед непосредственным процессом печати есть возможность указать, какой принтер будет использовать платформа для печати форм. В качестве принтера платформы можно задать принтер, используемый системой Windows по умолчанию, или другой доступный принтер по имени. Определить имя принтера, используемого по умолчанию системой, можно при помощи функции ПРИНТЕР_ПО_УМОЛЧ. Чтобы получить список всех доступных принтеров в системе Windows, в том числе и сетевых, используется функция СПИСОК_ПРИНТЕРОВ. Функция возвращает массив имен принтеров системы. Если в системе нет доступных принтеров, то стандартная команда печати формы будет недоступна. Узнать имя, используемого программой принтера в данный момент, можно при помощи функции ТЕК_ПРИНТЕР.
Для установки принтера, который используется по умолчанию системой Windows применяется функция УСТ_ПРИНТЕР_ПО_УМОЛЧ. Функция УСТ_ТЕК_ПРИНТЕР позволяет установить в платформе доступный принтер по его имени.
Для программной печати форм используется функция ПЕЧАТЬ. По умолчанию при программной печати используется текущий принтер программы (тот, что используется в данный момент), но имеется возможность указать другой доступный принтер в системе, используя его имя в качестве необязательного параметра функции. Также в качестве параметров используется логическое значение для показа стандартного диалога печати, целое значение для указания числа печатаемых копий и имя выходного файла.
При указании имени выходного файла PDF, XPS и подобные им принтеры создают файл с указанным именем без запроса пользователя. Если имя выходного файла не задано, то такие принтеры будут показывать стандартный диалог сохранения файла. Рекомендуется указывать полный путь к выходному файлу, т.к. платформа не может контролировать расположение создаваемого принтером файла.
Программная печать форм производится только если форма показана на экране, либо из обработчика открытие до показа формы.
Пример
В качестве примера рассматривается показ диалогового окна после открытия отчета. Диалоговое окно предназначено для отображения списка всех доступных принтеров, имени текущего принтера и имени принтера, используемого по умолчанию в системе. Кроме того, при помощи этого диалога можно выбрать текущий принтер для программы из списка доступных или принтер, используемый по умолчанию в системе, для дальнейшей программной печати отчета.
ТИП ОТЧЕТ [ ПОДМЕНА после_открытия = {Показ_диалога}; ФУНКЦИЯ Показ_диалога д.ПОКАЗАТЬ КОНЕЦ_ФУНКЦИИ ] ПЕРЕМ Отчет1: отч; ТИП Диалог_принтеры(ДИАЛОГ) [ ПОДМЕНА до_открытия = {До_откр}; КНОПКА: КнопкаОК = [ ... текст = "ОК", нажатие = {НажатаОК} ]; КНОПКА: КнопкаОтмена = [ ... текст = "Отмена", нажатие = {НажатаОтмена} ]; РЕДАКТОР: Редактор1 = [...]; КНОПКА: Кнопка1 = [ ... текст = "Узнать имя текущего принтера", нажатие = {Узнать_имя_тек_принтера} ]; КНОПКА: Кнопка2 = [ ... текст = "Установить принтер из списка", нажатие = {Уст_тек_принтер_из_списка} ]; СПИСОК: Список1 = [ ... элементы = () ]; ТЕКСТ: Текст2 = [ ... текст = "список всех принтеров" ]; КНОПКА: Кнопка3 = [ ... текст = "Узнать имя принтера по умолчанию", нажатие = {Принтер_по_умол} ]; КНОПКА: Кнопка4 = [ ... текст = "Установить принтер по умолчанию", нажатие = {Нажата_уст_по_умол} ]; КНОПКА: Кнопка5 = [ ... текст = "Печать", нажатие = {Нажата_печать} ]; ... ФУНКЦИЯ Узнать_имя_тек_принтера(ПЕРЕМ КНОПКА: кнопка) Редактор1.текст = ТЕК_ПРИНТЕР ОБНОВИТЬ КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ Уст_тек_принтер_из_списка(ПЕРЕМ КНОПКА: кнопка) УСТ_ТЕК_ПРИНТЕР(Список1.элементы[Список1.выбор]) КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ ЛОГИКА: До_откр РЕЗУЛЬТАТ = ДА ПЕРЕМ список = СПИСОК_ПРИНТЕРОВ ЦИКЛ ИНДЕКС (эл = список[номер]) Список1.элементы[номер] = эл КОНЕЦ_ЦИКЛА КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ Принтер_по_умол(ПЕРЕМ КНОПКА: кнопка) Редактор1.текст = ПРИНТЕР_ПО_УМОЛЧ ОБНОВИТЬ КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ Нажата_уст_по_умол(ПЕРЕМ КНОПКА: кнопка) УСТ_ПРИНТЕР_ПО_УМОЛЧ КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ Нажата_печать(ПЕРЕМ КНОПКА: кнопка) отч.ПЕЧАТЬ(ДА, 0, "doc.pdf", "Microsoft Print to PDF") КОНЕЦ_ФУНКЦИИ ... ] ПЕРЕМ Диалог_принтеры: д; ВЫЧИСЛИТЬ отч.ПОКАЗАТЬ КОНЕЦ