ZPL, как сдвигать нижний блок текста в зависимости от высоты верхнего?
На этикетке два блока текста, верхний и нижний.
Верхний блок может в зависимости от длины содержимого иметь 1 и более строк. Возможно ли сделать так, чтоб нижний блок сдвигался вниз, если у верхнего увеличивается высота т.к. строк становится больше?
Сейчас, если расположить нижний блок сразу под верхним, и если у верхнего добавить перенос строки, то он заползает на нижний.
Дополнительно:
В ZPL координаты задаются целыми числами от точки расчета.
Относительно других полей на форме указывать нельзя.
Вариант в вашем ПО делать рендеринг текста в поле (или приблизительно высчитывать высоту текста), после для каждой этикетки формировать индивидуальный шаблон.
- Так и делаем...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы сдвигать нижний блок текста в зависимости от высоты верхнего блока в ZPL (язык программирования для управления принтерами этикеток), вы можете использовать команду ^FO (Field Origin), которая устанавливает начальную позицию для печати текста или штрих-кода.
Пример:
^XA ^FO100,100^A0N,50,50^FDВерхний блок текста^FS ^FO100,150^A0N,50,50^FDНижний блок текста^FS ^XZ
В данном примере, первая строка ^FO100,100 устанавливает начальную позицию для печати верхнего блока текста на координатах x=100, y=100. Следующая строка ^FO100,150 устанавливает начальную позицию для печати нижнего блока текста на координатах x=100, y=150.
Вы можете настраивать эти значения в зависимости от высоты вашего верхнего блока текста. Попробуйте экспериментировать с различными значениями координат, чтобы добиться нужного сдвига.
Также обратите внимание, что вы можете использовать переменные для автоматизации этого процесса. Например, если у вас есть переменная $topBlockHeight, то вы можете использовать ее значение при установке координат для нижнего блока текста:
$topBlockHeight = 100; $bottomBlockHeight = $topBlockHeight + 50; // сдвиг на 50 единиц вниз от верхнего блока echo "^FO100,$topBlockHeight^A0N,50,50^FDВерхний блок текста^FS"; echo "^FO100,$bottomBlockHeight^A0N,50,50^FDНижний блок текста^FS";
Надеюсь, это поможет вам решить вашу проблему со сдвигом блоков текста в ZPL. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать. Удачи!