Настройка параметров печати в файле client.config
Настройка печати
Любой отчет формируется на сервере приложений и передается в виде файла в клиентское приложение для показа конечному пользователю. Формат файла выбирается пользователем на форме параметров подготовки отчета.
В настоящий момент поддерживаются форматы ExcelXML(MIME тип application/vnd.ms-excel) и Excel2007(MIME тип application/vnd.openxmlformats-officedocument.spreadsheetml.sheet). У формата ExcelXML (оставлен для совместимости, в следующих версиях системы он поддерживаться не будет) есть некоторые технические ограничения:
- Не поддерживаются картинки
- Не поддерживаются штрих-коды
- Не полностью реализованы возможности технологии «Хранимых отчетов».
Рекомендуем использовать Excel2007, который выбран на форме параметров подготовки отчета по умолчанию.
После того как отчет подготовлен на сервере приложений и доставлен на рабочее место пользователя, клиентское приложение обрабатывает полученный отчет приложением, ассоциированным с MIME типом отчета.
Способ обработки файла зависит от наличия и значения элемента /Config/Print/Properties/Property[@name=’UseDDE’] в конфигурационном файле client.config:
- Если элемента нет, то используется режим командной строки.
- Если значение False (по умолчанию), то используется режим командной строки.
- Если значение True, то используется режим DDE.
В режиме командной строки определяется приложение, ассоциированное в операционной системе с MIME типом отчета. Это приложение запускается и ему в параметрах командной строки передается сформированный файл. Недостатком этого способа является то, что у MS Excel нет способа напечатать файл напрямую из командной строки. Рекомендуем использовать значение False параметра UseDDE тем, кто применяет Open Office или Libre Office для работы с отчетами.
В режиме DDE определяется приложение, ассоциированное в операционной системе с MIME типом отчета. Это приложение запускается и по протоколу DDE ему передается команда на обработку файла. Этот режим можно использовать, чтобы MS Excel сразу отправлял подготовленный отчет на принтер по умолчанию. Рекомендуем использовать значение True параметра UseDDE тем, кто применяет MS Excel для работы с отчетами.
Алгоритм поиска приложения для обработки отчета
Как определяется приложение для показа и печати отчета (см. схему). Здесь и далее вместо Verb нужно использовать значение Open для просмотра и Print для печати отчета.
- В реестре ищется раздел HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/vnd.openxmlformats-officedocument.spreadsheetml.sheet для формата Excel2007 или в раздел HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/vnd.ms-excel для формата ExcelXML.
- В найденном разделе определяется значение строкового параметра с именем Extension. Найденное значение интерпретируется как расширение файла. Далее определяется приложение, ассоциированное с этим расширением. Для этого внутри раздела HKEY_CLASSES_ROOT ищется раздел с именем расширения.
- Значение по умолчанию для этого раздела в свою очередь также интерпретируется как имя приложения. Внутри раздела HKEY_CLASSES_ROOT ищется раздел с именем приложения.
- Внутри найденного раздела приложения выбирается значение по умолчанию раздела shell\Verb\command и интерпретируется как имя исполняемого файла с параметрами вызова. Указанный исполняемый файл запускается с указанными параметрами, к которым добавляется имя файла отчета.
При использовании механизма DDE сначала выполняются шаги с 1 по 3 описанного выше алгоритма. Далее внутри найденного раздела приложения выбирается значение по умолчанию раздела shell\Verb\command и интерпретируется как имя исполняемого файла с параметрами вызова. Приложение запускается и с ним устанавливается взаимодействие по протоколу DDE. Значение по умолчанию подраздела shell\Verb\ddeexec\ifexec (а при отсутствии значение по умолчанию раздела shell\Verb\ddeexec) интерпретируется как DDE команда.
Подробно о принципах назначения команд контекстного меню смотрите в статьях «Extending Shortcut Menus» и «How to Associate Verbs with DDE Commands» в MSDN.
Пример содержания client.config (находится в папке Client):
<?xml version="1.0" encoding="utf-8"?> <Config> <global> <assemblies> <Properties> <Property name="enable-cache" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"><![CDATA[True]]></Property> <Property name="store" type="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"><![CDATA[C:\ProgramData\Parus.SmartClient.Win\Assemblies]]></Property> </Properties> </assemblies> <updates> <Properties> <Property name="server-port" type="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"></Property> </Properties> </updates> </global> <Print> <Properties> <!--Не удаляйте и не комментируйте этот узел! Чтобы программа работала по-старому, укажите значение False. Значение True, чтобы использовать DDE для взаимодействия с Excel или другой программой, привязанной к типам xls xlsx.--> <Property name="UseDDE" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"><![CDATA[True]]></Property> <!--Не удаляйте и не комментируйте этот узел! задержка в милисекундах после старта до взаимодействия через DDE. Если Excel запускается, но не печатает, надо увеличить значение.--> <Property name="DdeDelay" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"><![CDATA[2000]]></Property> </Properties> </Print> </Config> |