В новой версии FastReport .NET 2018.1 добавлен экспорт в формат ZPL (Zebra Programming Language). Этот формат предназначен для использования совместно со специальными этикеточными принтерами. Подробнее о ZPL можно узнать в статье «Язык описания страниц печати – ZPL».
При разработке отчетов, которые предполагается печатать на принтере этикеток нужно учитывать следующие моменты:
Сформировать файл с набором ZPL команд можно из окна предварительного просмотра отчета.
Параметр Density отвечает за плотность печати – точек на миллиметр. Плотность выбирается в зависимости от принтера, на котором в дальнейшем будет производиться печать этикетки.
Включенный чекбокс Print As Bitmap указывает, что на принтер будет отправлена попиксельная копия изображения отчета. Иными словами - будет сформировано черно-белое изображение отчета и сохранено как картинка в ZPL формате. Если этот чекбокс выключен, то объекты отчета будут сохранены как последовательность ZPL команд. Текстовые значения сохраняются в кодировке UTF-8, баркоды (те, что имеют соответствующие аналоги в ZPL) передаются как отдельные команды. Следует иметь в виду, что при печати отчета в виде картинки, баркоды могут быть нечитаемыми, несмотря на то, что они будут выглядеть идентично тем, что мы получили в отчете. Причина такого поведения баркодов – неверное соотношение толщины линий из-за маштабирования объекта баркода. Чтобы избежать ошибок чтения баркодов, следует отключить режим Print As Bitmap, но в таком случае возможно несоответствие внешнего вида баркодов тем, которые мы видим в окне предварительного просмотра.
Параметр Font Scale отвечает за масштабирование размера шрифта.
При отсутствии под рукой принтера этикеток или в целях экономии, можно протестировать сохраненный файл в Online ZPL Viewer (эмулятор ZPL) http://labelary.com/viewer.html - откройте сформированный файл с расширением *.zpl в любом текстовом редакторе, скопируйте его содержимое в текстовое поле ввода на сайте и нажмите кнопку Redraw.
Произвести дополнительные настройки экспорта в ZPL и отправить его на печать непосредственно на этикеточный принтер можно из кода программы. Посмотрите демонстрационную программу в папке \Demos\C#\PrintZPL.
Вот так выглядит ее главная форма:
Вначале вы выбираете шаблон отчета, затем задаете параметры экспорта и выбираете принтер для печати. Это должен быть принтер, поддерживающий систему команд ZPL - в нашем случае это принтер Zebra ZD420.
В коде программы можно посмотреть, как осуществляется управление настройками экспорта в формат ZPL – свойствами объекта класса ZplExport:
Свойство |
Описание |
ZplExport.Density |
Плотность печати – зависит от модели принтера. Возможные значения: ZplExport.ZplDensity.d6_dpmm_152_dpi, |
ZplExport.CodePage |
Команда на языке ZPL, определяющая кодировку символов. Отправляется на принтер каждый раз перед началом печати этикетки. По умолчанию содержит строку “^CI28”, которая соответствует кодировке UTF-8. |
ZplExport.FontScale |
Масштабирование размера шрифта. По умолчанию равно 1. |
ZplExport.PrinterFont |
Строка с указанием вида шрифта, по умолчанию равна “A”. |
ZplExport.PrintAsBitmap |
Печатать как растровое изображение. По умолчанию установлено в true. |
ZplExport.PrinterInit |
Строка с набором команд, которые будут однократно отправлены на принтер перед началом печати отчета. Может быть использована для установки ориентации, переопределения шрифтов или других настроек принтера. |
ZplExport.PrinterFinish |
Строка с набором команд, которые будут однократно отправлены на принтер после печати отчета. |
ZplExport.PageInit |
Строка с набором команд, которые будут отправлены на принтер перед печатью каждой этикетки. |
Отправка на печать осуществляется с помощью метода FastReport.Export.Text.TextExportPrint.PrintStream, который передает поток с ZPL командами в очередь печати принтера этикеток.