При использовании виртуального принтера Bullzip PDF Printer в среде 1С:Предприятие 7.7 на сервере терминалов (RDP) разработчики и администраторы часто сталкиваются с неприятной особенностью: в нижней части созданных PDF-документов появляется надпись TRIAL MODE - Click here for more information. При этом у пользователя, под которым устанавливалась утилита, файлы формируются корректно, а у остальных сессионных пользователей RDP добавляется штамп.
Рассмотрим подробнее причину возникновения этой проблемы, разберем программный код работы с COM-объектом Bullzip из 1С 7.7 и изучим проверенные способы устранения надписи.
Появление строки TRIAL MODE связано с лицензионными ограничениями бесплатных версий Bullzip PDF Printer в многопользовательских терминальных средах:
HKEY_CURRENT_USER\Software\Bullzip\PDF Printer. У других терминальных пользователей создаются собственные изолированные ветки `HKCU`, в которых отсутствуют требуемые данные, из-за чего запуск расценивается как незарегистрированный.Программа 1С 7.7 управляет настройками виртуального принтера через COM-объект Bullzip.PDFPrinterSettings. Разберем по шагам стандартный алгоритм формирования печатных форм без вывода диалоговых окон:
Попытка
ПринтерPDF = СоздатьОбъект("Bullzip.PDFPrinterSettings");
Исключение
Предупреждение("Не установлен PDF принтер!");
Возврат;
КонецПопытки;
// Настройка фонового сохранения без запросов пользователю
ПринтерPDF.SetValue("output", ИмяФайла);
ПринтерPDF.SetValue("ShowSaveAS", "never");
ПринтерPDF.SetValue("ShowProgress", "no");
ПринтерPDF.SetValue("ShowProgressFinished", "no");
ПринтерPDF.SetValue("ShowSettings", "never");
ПринтерPDF.SetValue("ShowPDF", "no");
ПринтерPDF.SetValue("ConfirmOverwrite", "no");
ПринтерPDF.WriteSettings();
// Задание параметров страницы в 1С
НастройкиПечатиОриентация = 1; // 1 - портретная, 2 - ландшафтная
НастройкиПечатиМасштаб = 100;
НастройкиПечатиРазложитьПоКопиям = 1;
НастройкиПечатиПолеЛев = 10;
НастройкиПечатиПолеПрав = 10;
НастройкиПечатиПолеВерх = 10;
НастройкиПечатиПолеНиз = 10;
НастройкиПечатиКолонтитулВерх = 0;
НастройкиПечатиКолонтитулНиз = 0;
НастройкиПечатиАвтомасштабПоШирине = 1;
НастройкиПечатиЧерноБелаяПечать = 0;
НастройкиПечатиИмяПринтера = "Bullzip PDF Printer";
Таб.ПараметрыСтраницы(НастройкиПечатиОриентация, НастройкиПечатиМасштаб, НастройкиПечатиРазложитьПоКопиям,
НастройкиПечатиПолеЛев, НастройкиПечатиПолеПрав, НастройкиПечатиПолеВерх, НастройкиПечатиПолеНиз,
НастройкиПечатиКолонтитулВерх, НастройкиПечатиКолонтитулНиз, НастройкиПечатиАвтомасштабПоШирине,
НастройкиПечатиЧерноБелаяПечать, НастройкиПечатиИмяПринтера);
Таб.Напечатать(0);
В приведенном коде метод SetValue позволяет принудительно отключить все интерактивные диалоги и передать имя создаваемого файла в параметр output, а метод WriteSettings записывает параметры во временный файл конфигурации. Однако если программа работает в режиме RDP с ограничениями редакции, это не предотвратит вывод водяного знака.
Наиболее простой и проверенный на практике способ — использование старых версий утилиты, в которых алгоритм жесткой проверки RDP-сессий отсутствовал или работал иначе. Практика показывает, что дистрибутивы серии 10.x (например, Setup_BullzipPDFPrinter_10_0_0_1840_S.exe или Setup_BullzipPDFPrinter_10_12_0_2363) корректно формируют PDF-файлы на Windows Server без добавления водяного знака TRIAL MODE для всех терминальных пользователей.
Для того чтобы параметры принтера были одинаково видны всем пользователям сервера, можно продублировать конфигурацию из ветки реестра администратора в глобальный раздел HKEY_LOCAL_MACHINE\SOFTWARE\Bullzip\PDF Printer или настроить общесистемный файл конфигурации global.ini в каталоге ProgramData.
Также важно убедиться, что у учетных записей RDP-пользователей есть права на запись в их персональный каталог временных файлов %TEMP%, куда COM-объект записывает конфигурационные файлы перед печатью.
Если серверная установка блокируется политикой лицензирования, можно установить Bullzip PDF Printer непосредственно на физические рабочие станции пользователей. В настройках RDP-клиента включает проброс принтеров (Printer Redirection). В этом случае 1С 7.7 отправляет задание на перенаправленный принтер, а сама генерация файла происходит в локальной ОС пользователя, где виртуальный принтер работает в беспрепятственном локальном режиме.
Если возможности сменить версию Bullzip нет, целесообразно рассмотреть альтернативные решения, полностью бесплатные для применения на серверах:
.ps, после чего через командную строку вызывается консольная утилита Ghostscript (gswin32c.exe) для конвертации в .pdf. Этот метод гарантирует стабильную фоновую работу независимо от сессий RDP.