Impressao - imprimir codigo de barras na matricial (epson) |
Top Previous Next |
// imprimir código de barras na matricial
unit codbarUnit;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ARotinasUnit, Math, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); end;
var Form1: TForm1;
implementation
{$R *.dfm}
{ Laser impressora a laser ou nao? BarCode valor do codigo Margem enigma... Qtd qtd copias? Altura altura da barra? Colunas qtd colunas? Msg1 texto opcional Msg2 texto opcional2 } procedure PrintBar(const Laser: Boolean; const Barcode: string; Margem, Qtd, Altura, Colunas: Integer; const Msg1: string; Msg2: string); var x,y,z,accros, E1,E2,O1,O2,N1,N2,cols: integer; preamble, postamble: string; arq : TextFile; BAR : array[1..126] of string;
// procedure interna para "montar" o código de barras // inicializa codigo de barras procedure InitBar(const Laser: Boolean; var preamble, postamble: string); var NB, WB, NS, WS, start_code, end_code: string; small_bar, wide_bar : Integer; begin // monta o "comando" que pretara a impressora para imprimir o código de barras if Laser then begin Small_bar := 3; Wide_bar := Round(Small_Bar * 2.25); NS := #27 + '*p+' + FormatFloat('00', small_bar) + 'X'; WS := #27 + '*p+' + FormatFloat('00', wide_bar) + 'X'; NB := #27 + '*c' + FormatFloat('00', small_bar) + 'a' + Trim(IntToStr(1*50)) + 'b0P' + #27 + '*p+' + Formatfloat('00',small_bar) + 'X'; WB := #27 + '*c' + FormatFloat('00', wide_bar) + 'a' + Trim(IntToStr(1*50)) + 'b0P' + #27 + '*p+' + Formatfloat('00',wide_bar) + 'X'; Start_Code := #27 + '*p-50Y'; End_Code := #27 + '*p+50Y'; end else begin NS := #0#0; WS := #0#0#0#0; NB := #255; WB := #255#255#255; Start_Code := ''; End_Code := ''; end;
// para cada letra ou caracter tem uma sequencia BAR[01] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+NS+NB+NS+NB+WS+NB+NS+WB; BAR[02] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+WB+NS+NB+WS+NB+NS+WB; BAR[03] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+NS+WB+NS+NB+WS+NB+NS+NB; BAR[04] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+NB+NS+WB+WS+NB+NS+WB; BAR[05] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+NS+NB+NS+WB+WS+NB+NS+NB; BAR[06] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+WB+NS+WB+WS+NB+NS+NB; BAR[07] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+NB+NS+NB+WS+WB+NS+WB; BAR[08] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+NS+NB+NS+NB+WS+WB+NS+NB; BAR[09] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+WB+NS+NB+WS+WB+NS+NB; BAR[10] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+NB+NS+WB+WS+WB+NS+NB; BAR[11] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+NS+NB+NS+NB+NS+NB+WS+WB; BAR[12] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+WB+NS+NB+NS+NB+WS+WB; BAR[13] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+NS+WB+NS+NB+NS+NB+WS+NB; BAR[14] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+NB+NS+WB+NS+NB+WS+WB; BAR[15] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+NS+NB+NS+WB+NS+NB+WS+NB; BAR[16] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+WB+NS+WB+NS+NB+WS+NB; BAR[17] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+NB+NS+NB+NS+WB+WS+WB; BAR[18] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+NS+NB+NS+NB+NS+WB+WS+NB; BAR[19] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+WB+NS+NB+NS+WB+WS+NB; BAR[20] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+NS+NB+NS+WB+NS+WB+WS+NB; BAR[21] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+WS+NB+NS+NB+NS+NB+NS+WB; BAR[22] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+WS+WB+NS+NB+NS+NB+NS+WB; BAR[23] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+WS+WB+NS+NB+NS+NB+NS+NB; BAR[24] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+WS+NB+NS+WB+NS+NB+NS+WB; BAR[25] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + WB+WS+NB+NS+WB+NS+NB+NS+NB; BAR[26] := NB+WS+NB+WS+NB+WS+NB+NS+NB + NS + NB+WS+WB+NS+WB+NS+NB+NS+NB; BAR[27] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+NB+WS+NB+NS+WB; BAR[28] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+NB+WS+NB+NS+WB; BAR[29] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + WB+NS+WB+NS+NB+WS+NB+NS+NB; BAR[30] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+WB+WS+NB+NS+WB; BAR[31] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+WB+WS+NB+NS+NB;
BAR[32] := NB+WS+WB+NS+NB+NS+WB+NS+NB; // " " SPACE BAR[33] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + WB+NS+NB+NS+NB+WS+NB+NS+WB; // "!" BAR[34] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + NB+NS+WB+NS+NB+WS+NB+NS+WB; // """ BAR[35] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + WB+NS+WB+NS+NB+WS+NB+NS+NB; // "#" BAR[36] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + NB+NS+NB+NS+WB+WS+NB+NS+WB; // "$" BAR[37] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + WB+NS+NB+NS+WB+WS+NB+NS+NB; // "%" BAR[38] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + NB+NS+WB+NS+WB+WS+NB+NS+NB; // "&" BAR[39] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + NB+NS+NB+NS+NB+WS+WB+NS+WB; // "'" BAR[40] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + WB+NS+NB+NS+NB+WS+WB+NS+NB; // "(" BAR[41] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + NB+NS+WB+NS+NB+WS+WB+NS+NB; // ")" BAR[42] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + NB+NS+NB+NS+WB+WS+WB+NS+NB; // "*" BAR[43] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + WB+NS+NB+NS+NB+NS+NB+WS+WB; // "+" BAR[44] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + NB+NS+WB+NS+NB+NS+NB+WS+WB; // "," BAR[45] := NB+WS+NB+NS+NB+NS+WB+NS+WB; // "-" BAR[46] := WB+WS+NB+NS+NB+NS+WB+NS+NB; // ".". BAR[47] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + WB+NS+NB+NS+WB+NS+NB+WS+NB; // "/"
BAR[48] := NB+NS+NB+WS+WB+NS+WB+NS+NB; // "0" BAR[49] := WB+NS+NB+WS+NB+NS+NB+NS+WB; // "1" BAR[50] := NB+NS+WB+WS+NB+NS+NB+NS+WB; // "2" BAR[51] := WB+NS+WB+WS+NB+NS+NB+NS+NB; // "3" BAR[52] := NB+NS+NB+WS+WB+NS+NB+NS+WB; // "4" BAR[53] := WB+NS+NB+WS+WB+NS+NB+NS+NB; // "5" BAR[54] := NB+NS+WB+WS+WB+NS+NB+NS+NB; // "6" BAR[55] := NB+NS+NB+WS+NB+NS+WB+NS+WB; // "7" BAR[56] := WB+NS+NB+WS+NB+NS+WB+NS+NB; // "8" BAR[57] := NB+NS+WB+WS+NB+NS+WB+NS+NB; // "9"
BAR[58] := NB+WS+NB+WS+NB+NS+NB+WS+NB + NS + NB+WS+WB+NS+WB+NS+NB+NS+NB; // ":" BAR[59] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+WB+WS+NB+NS+NB; // ";" BAR[60] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+NB+WS+WB+NS+WB; // "<" BAR[61] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+NB+WS+WB+NS+NB; // "=" BAR[62] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+NB+WS+WB+NS+NB; // ">" BAR[63] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+WB+WS+WB+NS+NB; // "?" BAR[64] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+WS+WB+NS+NB+NS+NB+NS+WB; // "@"
BAR[65] := WB+NS+NB+NS+NB+WS+NB+NS+WB; // "A" BAR[66] := NB+NS+WB+NS+NB+WS+NB+NS+WB; // "B" BAR[67] := WB+NS+WB+NS+NB+WS+NB+NS+NB; // "C" BAR[68] := NB+NS+NB+NS+WB+WS+NB+NS+WB; // "D" BAR[69] := WB+NS+NB+NS+WB+WS+NB+NS+NB; // "E" BAR[70] := NB+NS+WB+NS+WB+WS+NB+NS+NB; // "F" BAR[71] := NB+NS+NB+NS+NB+WS+WB+NS+WB; // "G" BAR[72] := WB+NS+NB+NS+NB+WS+WB+NS+NB; // "H" BAR[73] := NB+NS+WB+NS+NB+WS+WB+NS+NB; // "I" BAR[74] := NB+NS+NB+NS+WB+WS+WB+NS+NB; // "J" BAR[75] := WB+NS+NB+NS+NB+NS+NB+WS+WB; // "K" BAR[76] := NB+NS+WB+NS+NB+NS+NB+WS+WB; // "L" BAR[77] := WB+NS+WB+NS+NB+NS+NB+WS+NB; // "M" BAR[78] := NB+NS+NB+NS+WB+NS+NB+WS+WB; // "N" BAR[79] := WB+NS+NB+NS+WB+NS+NB+WS+NB; // "O" BAR[80] := NB+NS+WB+NS+WB+NS+NB+WS+NB; // "P" BAR[81] := NB+NS+NB+NS+NB+NS+WB+WS+WB; // "Q" BAR[82] := WB+NS+NB+NS+NB+NS+WB+WS+NB; // "R" BAR[83] := NB+NS+WB+NS+NB+NS+WB+WS+NB; // "S" BAR[84] := NB+NS+NB+NS+WB+NS+WB+WS+NB; // "T" BAR[85] := WB+WS+NB+NS+NB+NS+NB+NS+WB; // "U" BAR[86] := NB+WS+WB+NS+NB+NS+NB+NS+WB; // "V" BAR[87] := WB+WS+WB+NS+NB+NS+NB+NS+NB; // "W" BAR[88] := NB+WS+NB+NS+WB+NS+NB+NS+WB; // "X" BAR[89] := WB+WS+NB+NS+WB+NS+NB+NS+NB; // "Y" BAR[90] := NB+WS+WB+NS+WB+NS+NB+NS+NB; // "Z"
BAR[91] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+NB+NS+NB+WS+WB; // "]" BAR[92] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+NB+NS+NB+WS+WB; // "\" BAR[93] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + WB+NS+WB+NS+NB+NS+NB+WS+NB; // "[" BAR[94] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+WB+NS+NB+WS+WB; // "^" BAR[95] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+WB+NS+NB+WS+NB; // "_" BAR[96] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + WB+WS+WB+NS+NB+NS+NB+NS+NB; // "`"
BAR[97] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+NB+WS+NB+NS+WB; // "a" BAR[98] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+NB+WS+NB+NS+WB; // "b" BAR[99] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+NS+WB+NS+NB+WS+NB+NS+NB; // "c" BAR[100] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+WB+WS+NB+NS+WB; // "d" BAR[101] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+WB+WS+NB+NS+NB; // "e" BAR[102] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+WB+WS+NB+NS+NB; // "f" BAR[103] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+NB+WS+WB+NS+WB; // "g" BAR[104] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+NB+WS+WB+NS+NB; // "h" BAR[105] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+NB+WS+WB+NS+NB; // "i" BAR[106] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+WB+WS+WB+NS+NB; // "j" BAR[107] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+NB+NS+NB+WS+WB; // "k" BAR[108] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+NB+NS+NB+WS+WB; // "l" BAR[109] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+NS+WB+NS+NB+NS+NB+WS+NB; // "m" BAR[110] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+WB+NS+NB+WS+WB; // "n" BAR[111] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+WB+NS+NB+WS+NB; // "o" BAR[112] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+WB+NS+NB+WS+NB; // "p" BAR[113] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+NB+NS+WB+WS+WB; // "q" BAR[114] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+NB+NS+WB+WS+NB; // "r" BAR[115] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+NB+NS+WB+WS+NB; // "s" BAR[116] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+WB+NS+WB+WS+NB; // "t" BAR[117] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+WS+NB+NS+NB+NS+NB+NS+WB; // "u" BAR[118] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+WS+WB+NS+NB+NS+NB+NS+WB; // "v" BAR[119] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+WS+WB+NS+NB+NS+NB+NS+NB; // "w" BAR[120] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+WS+NB+NS+WB+NS+NB+NS+WB; // "x" BAR[121] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + WB+WS+NB+NS+WB+NS+NB+NS+NB; // "y" BAR[122] := NB+WS+NB+NS+NB+WS+NB+WS+NB + NS + NB+WS+WB+NS+WB+NS+NB+NS+NB; // "z"
BAR[123] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+WB+NS+NB+WS+NB; // '{' BAR[124] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+NB+NS+NB+NS+WB+WS+WB; // "|" BAR[125] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + WB+NS+NB+NS+NB+NS+WB+WS+NB; // '}' BAR[126] := NB+NS+NB+WS+NB+WS+NB+WS+NB + NS + NB+NS+WB+NS+NB+NS+WB+WS+NB; // "~"
Preamble := Start_Code + NB+WS+NB+NS+WB+NS+WB+NS+NB + NS; Postamble := NB+WS+NB+NS+WB+NS+WB+NS+NB + End_Code; end;
begin // Valores Padrao Qtd := ARotinasUnit.ifthen(Qtd = 0, 1, Qtd ); Altura := ARotinasUnit.ifthen(Altura = 0, 2, Altura ); Colunas := ARotinasUnit.ifthen(Colunas = 0, 1, Colunas); Qtd := Floor(Qtd / Colunas) + ARotinasUnit.ifthen((Qtd/Colunas) - Floor(Qtd / Colunas) <> 0,1,0); Initbar(Laser, Preamble, Postamble);
for z := 1 to Qtd do begin AssignFile(arq, 'LPT1'); rewrite(arq);
///////////////////////////////////////////////////////// LASER if laser then begin for x := 1 to Altura do for accros := 1 to Colunas do begin writeln(arq, ''); write(arq, RepeteStr(#32,3) + Preamble); for y := 1 to length(Barcode) do begin write(arq, BAR[ ord(copy(Barcode, Y, 1)[1])]); write(arq, #27 + '*p+' + formatfloat('00', 3) + 'X'); end; write(arq, Postamble);
if x = 1 then write(arq, Repetestr(#32, 3) + AlinhaDir(Msg1,12)) else write(arq, Repetestr(#32, 3) + AlinhaDir(Msg2,12)); end; end else ////////////////////////////////////////////////// MATRICIAL begin cols := length(preamble); E1 := cols mod 256; E2 := floor(cols / 256);
cols := length(postamble); O1 := cols mod 256; O2 := floor(cols / 256);
writeln(arq,' '); write(arq, #27 + #51 + #2);
for x := 1 to Altura do begin
if Margem > 0 then Write(Arq, RepeteStr(#32, Margem));
for Accros := 1 to Colunas do begin write(arq, #27 + 'L' + #30 + RepeteStr(#0,31)); write(arq, #27 + 'L' + chr(E1) + chr(E2) + PreAmble);
for y := 1 to length(barcode) do begin cols := length(bar[ord(copy(Barcode, Y, 1)[1])]) + 2; N1 := cols mod 256; N2 := floor(cols / 256); write(arq, #27 + 'L' + chr(N1) + chr(N2) + bar[ord(copy(Barcode, Y, 1)[1]) ] + #0#0); end;
write(arq, #27 + 'L' + chr(O1) + chr(O2) + PostAmble);
if Trim(Msg1) = '' then write(arq, RepeteStr(#32, 2)) else case x of 1: write(arq, #32#32 + AlinhaEsq(Msg1,12)); 2: write(arq, #32#32 + AlinhaEsq(Msg2,12)); else write(arq, RepeteStr(#32, 14)); end;
if Colunas > 1 then write(arq, repetestr(#32,3)); end; write(arq, #27 + #74 + #24 + #13); end; write(arq, #27 + #50); end;
if Margem > 0 then Write(Arq, RepeteStr(#32, Margem)); // Escreve o nº dos códigos de barras for Accros := 1 to Colunas do begin Write(Arq, RepeteStr(#32, (Length(Barcode) div 2) + 4) + Barcode); if (Colunas > 1) and (Accros < Colunas) then write(arq, RepeteStr(#32, ARotinasUnit.IfThen(Trim(Msg1) = '', 8, 20))); end; end; close(arq); end;
procedure TForm1.Button1Click(Sender: TObject); begin Printbar(False, '1234', 2, 3, 3, 4, '', ''); end;
end. |