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-сервер, т.к. шаблон загружается и распознаётся при инициализации драйвера во время старта сервера. Для оптимизации по скорости.