Ver Mensaje Individual
  #36  
Antiguo 26-12-2017
lucho6007 lucho6007 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Junín, pcia de BsAs, Argentina
Posts: 73
Reputación: 16
lucho6007 Va por buen camino
Finalmente lo hice a mano, me basé en el codigo en Pyhton de PyAFIPws:
Código Delphi [-]
function GenerarImagen(AImage: TImage; Codigo: String; BaseWidth: Integer = 3; Width: Integer = 0; Height: Integer = 30): Boolean;
var Wide, Narrow, Barra, Espacio: Integer;
    BarraStr: String;
    XPos, I, J: Integer;

const Bars: array[0..11] of string = ('nnwwn', 'wnnnw', 'nwnnw', 'wwnnn', 'nnwnw', 'wnwnn', 'nwwnn', 'nnnww', 'wnnwn', 'nwnwn', 'nn', 'wn');
begin
  if AImage = nil then begin
    AImage:= TImage.Create(nil);
  end;

  Result:= False;
  Wide:= BaseWidth;
  Narrow:= BaseWidth div 3;

  if Odd(Length(Codigo)) then begin
    Codigo:= '0' + Codigo;
  end;

  Codigo:= '::' + Codigo + ';:'; // A y Z en el original

  if Width = 0 then begin
    Width:= (Length(Codigo) * 3) * BaseWidth + (10 * Narrow);
  end;
  AImage.Width:= Width;
  AImage.Height:= Height;

  AImage.Canvas.Pen.Color := clWhite;
  AImage.Canvas.Brush.Color:= clWhite;
  AImage.Canvas.Rectangle(0, 0, AImage.Width, AImage.Height);
  AImage.Canvas.Brush.Color:= clBlack;
  AImage.Canvas.Pen.Color := clBlack;

  XPos:= 18;
  I:= 1;
  while I <= Length(Codigo) do begin
    Barra:= Ord(Codigo[i]) - Ord('0');
    Espacio:= Ord(Codigo[I + 1]) - Ord('0');
    BarraStr:= '';
    for J:= 1 to Length(Bars[Barra]) do begin
      BarraStr:= BarraStr + Bars[Barra][J] + Bars[Espacio][J];
    end;

    for J:= 1 to Length(BarraStr) do begin
      if BarraStr[J] = 'n' then begin
        Width:= Narrow;
      end
      else begin
        Width:= Wide;
      end;
      if Odd(J) then begin
        AImage.Canvas.Rectangle(XPos, 0, XPos + Width, Height);
      end;
      XPos:= XPos + Width;
    end;
    Inc(I, 2);
  end;
  Result:= True;
end;

Última edición por lucho6007 fecha: 26-12-2017 a las 15:08:21. Razón: estaba mal el código de declaracion
Responder Con Cita