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 + ';:';
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;