c # Zebra Printer SDK: преобразование ZPL в EPL2

Я разрабатываю небольшое приложение для печати этикеток на принтерах Zebra, и для этого я использовал язык ZPL и пакет Zebra Printer SDK.

Мое приложение полностью функционально с ZPL, которое я тестировал на TLP 2824 Plus, но я обнаружил, что фактический принтер, который будет использоваться, - это TLP 2844, который использует только язык EPL (прежде чем возникнет вопрос, TLP 2824 неисправен, поэтому просто подходит для тесты).

Мои методы печати основаны на следующем: https://github.com/Zebra/devtalks/blob/121317-LinkOS_CSharp/BasicWpfPrintApp/MainWindow.xaml.cs

Мои методы проверяют язык и, кажется, печатают только ZPL, поэтому мне придется их изменить, но моя основная проблема - это переключение моей строки с ZPL на EPL.

Вот мой код ZPL:

^XA
^CFA,20
^FB456,1,0,C^FO0,50^FDAR_Ref^FS
^FB252,1,0,C^FO0,80^FDDate^FS
^FB660,1,0,C^FO0,80^FDPrix^FS

^FB456,1,0,C^FO0,138^FDAR_Ref^FS
^FB252,1,0,C^FO0,168^FDDate^FS
^FB660,1,0,C^FO0,168^FDPrix^FS

^FB456,1,0,C^FO0,226^FDAR_Ref^FS
^FB252,1,0,C^FO0,256^FDDate^FS
^FB660,1,0,C^FO0,256^FDPrix^FS

^FB456,1,0,C^FO0,314^FDAR_Ref^FS
^FB252,1,0,C^FO0,344^FDDate^FS
^FB660,1,0,C^FO0,344^FDPrix^FS
^CFA,15
^XZ

Вот ссылка для просмотра, чтобы увидеть результат.

EPL кажется похожим на ZPL, и я полагаю, что метод печати должен быть аналогичным, поэтому я пытаюсь написать такую ​​же строку, что и приведенная выше, и адаптировать свои методы.

Спасибо за чтение!


person Shilok    schedule 01.08.2019    source источник
comment
Для скольких принтеров вы это делаете? Возможно, стоит просто заменить принтер / принтеры, чем код для конкретного принтера, если он у вас уже есть.   -  person EdHayes3    schedule 02.08.2019
comment
@ EdHayes3 Для нескольких ^^ Так что не вариант ^^   -  person Shilok    schedule 05.08.2019
comment
Похоже, вы создаете новое приложение, которое будет использоваться в течение некоторого времени. Этот принтер, TLP 2844, был снят с производства: 30 сентября 2012 г. Поддержка закончилась 31 октября 2015 г. Предложите компании купить новые принтеры. Стоимость замены Ethernet / USB текущего поколения составляет 460 долларов без скидки за количество.   -  person EdHayes3    schedule 05.08.2019


Ответы (1)


Так! С помощью:

Мне удалось получить нечто подобное:

N
q456
Q352,56
A186,20,0,4,1,1,N,"AR_Ref"
A86,50,0,4,1,1,N,"Date"
A314,50,0,4,1,1,N,"Prix"
P1,1

(метки разделены на 4, это просто код для первого, чтобы показать в качестве примера).

Я использовал переменные как в EPL, так и в ZPL для горизонтального и вертикального положения. Я не нашел, как центрировать в EPL, поэтому использовал для этого старый добрый C #:

double textLength = myText.Length * 14; // 14 is the horizontal dots number for font 4
int pos = (int)Math.Floor((width - textLength) / 2 );

(и так далее для желаемых позиций)

EPL, похоже, не нравится символ €, и я не понимал, как использовать команду oR для этого (и как избавиться от косой черты 0 с помощью той же команды, но я всегда мог увидеть это позже, по крайней мере, Код EPL рабочий!).

person Shilok    schedule 06.08.2019