driver: ru.bitel.frk.driver.fop.Driver
Представляет собой FO-транслятор, который действует так:
формирует из приходящих данных (текстовые строки)
;обрабатывает с помошью этой
указанный заранее шаблон;выводит его на печать на указанном принтере.
Необходимая конфигурация сервера печати:
# Название принтера в системе (если не указан, то возьмётся принтер по умолчанию, прописнный в системе, если и такого нет, будет ошибка) printer=pdf # Шаблон xsl. Прямой путь к файлу (можно, конечно, положить его в xsl сервера # биллинга, тогда сервер печати, конечно, не стартует без старта последнего) #xsl=http://127.0.0.1:8080/bgbilling/xsl/cashcheck_fop.xsl #xsl=file:///home/dimon/workspace/bgbilling/modules/cashcheck/server/server_files/xsl/cashcheck_fop.xsl xsl=file:///usr/local/BGCashcheckServer/xsl/cashcheck_fop.xsl # Имя задания печати (произвольное), может быть "не задано" jobName=fop driver printing # Количество копий, может быть "не задано" jobCopies=1
К этому драйверу нужны две сущности: скрипт поведения, который формирует нужные строки для драйвера, и xsl-шаблон, который преобразуется с помощью xml, сформированной драйвером, в готовый документ для печати. Пример скрипта поведения см. ниже, в разделе "настройка внешнего вида чеков". Смысл скрипта состоит в заполнении набора строк с помощью конструкций вида
check.addString( "строка" );
порядок строк важен для шаблона, там они выбираются по номерам. Список строк драйвер преобразует в xml такого вида:
<?xml version="1.0" encoding="UTF-8"?> <data clientsumma="10.0" summa="10.0"> <line n="1" text="120,00р."/> <line n="2" text="строка2"/> <line n="3" text="строка3" summ="10.0" dep="15"/> </data>
Такую xml и надо иметь ввиду при создании и редактировании xsl-шаблона. Последняя, третья, строка получена с помощью метода
в скрипте обработки, а не . Сам шаблон представляет собой любой валидный FO-документ. Получить в этом шаблоне значения строковых параметров из драйвера можно таким кодом (см. исходную xml выше):<!-- Сумма платежа: 120,00р. --> <xsl:variable name="param_summ" select="line[@n='1']/@text" />
Таким образом, в xsl-переменной окажется значение аттрибута "text" из первой строки ("n"=1).
При правке или замене XSL-FO шаблона при необходимости видеть результат внесённых изменений необходимо перезагрузить CashCheck-сервер, т.к. шаблон загружается и распознаётся при инициализации драйвера во время старта сервера. Для оптимизации по скорости.