ГЛАВНАЯ СТРАНИЦА

Как выводить штрихкоды и QR-коды в печатных представлениях

10.1

История переиздания
09.09.2020

В печатных представлениях форматов печати программных модулей можно выводить штрихкоды или QR-коды.

Важно

Печать QR-кодов возможна только в матричных отчетах.

Для вывода штрихкода или QR-кода нужно сформировать Esc-последовательность и передать ее элементу Esc-команда (). Этот элемент можно выбрать на левой панели дизайнера FastReport.

Рисунок 5610. Выбор элемента Esc-команда

Выбор элемента Esc-команда

Как создать функцию ConvertChar?

Прежде всего, нужно создать функцию ConvertChar для конвертирования символов. Эта функция участвует в формировании последовательности символов, передаваемых элементу элементу Esc-команда.

function ConvertChar(value: String):String;
var hi, lo: Integer;
begin
   hi := Ord(value) div 16;
   lo := Ord(value) mod 16;

   Result := '#' + IIF(hi < 10, '0', '') + IntToStr(hi) + '#' + IIF(lo < 10, '0', '') + IntToStr(lo);
end; 

Как вывести штрихкод?

Поместите на макет печатного представления элемент Esc-команда ().

Перейдите на вкладку «Code» дизайнера FastReport.

Создайте обработчик события, например, OnBeforePrint.

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
var 
  str1, str2: String;
  int1: Integer;                       
begin
// Формируем кодированное значение
  str2:='Data=1234567890' + #13#10 + 'Type=CODE128'+ #13#10 + 'Width=2'+ #13#10 + 'Height=162'+ #13#10 + 'TextPosition=Below';
// Преобразуем полученное значение в последовательность символов для Esc-команды
  for int1 := 1 to Length(str2) do begin
    str1 := str1 + ConvertChar(str2[int1]);                                                                                                   
  end;
// Выводим QR-код с помощью Esc-команды
  CMDBarCodePrint.Command := '#127#01' + str1;
end;

где:

'Data=1234567890' + #13#10

– кодируемое значение.

'Type=CODE128'+ #13#10 

– тип штрихкода. Допустимые значения: UPC-A, UPC-E, EAN13, EAN8, CODE39, ITF, CODABAR, CODE93, CODE128.

'Width=2'+ #13#10

– ширина штрихкода. Может принимать значения от 2 до 6. Значение по умолчанию 2.

'Height=162'+ #13#10

– высота штрихкода. Может принимать значения от 1 до 255. Значение по умолчанию 162.

'TextPosition=Below'

– позиция для вывода цифрового кода у штрихкода.

Допустимые значения:

  • Off – не выводить код,

  • Above – вывести код сверху,

  • Below – вывести код снизу,

  • Both – вывести код сверху и снизу.

Как вывести QR-код?

Поместите на макет печатного представления элемент Esc-команда ().

Перейдите на вкладку «Code» дизайнера FastReport.

Создайте обработчик события, например, OnBeforePrint.

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
var 
  str1, str2: String;
  int1: Integer;                     
begin
// Формируем кодированное значение
  str2 := 'Data = ''' + <Header."TicketURL"> + '''' + #13#10 + 'ModuleSize=4' + #13#10 + 'ErrorLevel=1';
// Преобразуем полученное значение в последовательность символов для Esc-команды
  for int1 := 1 to Length(str2) do begin
    str1 := str1 + ConvertChar(str2[int1]);                                                                  
  end;
// Выводим QR-код с помощью Esc-команды
  CMDBarCodePrint.Command := '#127#01' + str1;    
end;

где:

'Data = ''' + <Header."TicketURL"> + '''' + #13#10

– кодируемое значение. В данном случае, получаемое из поля TicketURL потока Header.

'ModuleSize=4' + #13#10

– размер блока QR-кода в точках. Может принимать значения от 4 до 16.

'ErrorLevel=1'

– уровень коррекции ошибок. Может принимать значения от 0 до 3.