Установка принтера программы и печать
В системе 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")
КОНЕЦ_ФУНКЦИИ
...
]
ПЕРЕМ Диалог_принтеры: д;
ВЫЧИСЛИТЬ
отч.ПОКАЗАТЬ
КОНЕЦ