Page 1 of 1

Codigo de Barras y tUtilPrn

PostPosted: Fri Feb 23, 2018 9:47 pm
by caducca
Hola grupo:
Estoy tratando de imprimir una boleta y utilizo la clase tUtilPrn, todo bien hasta ahí, pero quiero agregarle un código de barras y no se como hacerlo con esta clase.
Lo hago de la siguiente forma:

@ xStep,yStep code128 oDBCheq:NroCom of oPr SIZE 1 mode 'A' //

pero a distintas impresoras sale en distintas posiciones.
Se puede imprimir con la clase tUtilPrn los códigos de barras?
O que otra alternativa debo usar para que salga igual sin depender de la impresora.
Gracias

Re: Codigo de Barras y tUtilPrn

PostPosted: Sat Feb 24, 2018 4:33 pm
by caducca
Lo solucione instalando el font code128 y usando de la siguiente manera:

Define Font oFC128   name 'CODE 128'        size 0,-14 of oPr
UTILPRN oUtils nLinea,nColum+12   SAY oDBCheq:Barra  FONT oFC128

La única contra de esto es que se debe instalar en cada maquina del cliente dicho font.
Espero les sirva.
Saludos

Re: Codigo de Barras y tUtilPrn

PostPosted: Mon Feb 26, 2018 12:49 pm
by caducca
Me apure en contestar, si me imprime bien , pero el lector de código de barras no lee lo que imprimo.
Alguno puede saber porque?
Gracias

Re: Codigo de Barras y tUtilPrn

PostPosted: Mon Feb 26, 2018 1:35 pm
by cnavarro
Para imprimir codigos de barra, tienes varias soluciones:
- Busca hbzebra en el foro
- Barlib de Cayetano, yo la he utilizado mucho
viewtopic.php?f=6&t=29669&p=189486&hilit=codebar#p167720

Re: Codigo de Barras y tUtilPrn

PostPosted: Mon Feb 26, 2018 2:45 pm
by leandro
Hola buenos días

A mi alguna vez me sucedió algo similar, lo solucione colocando un asterisco al inicio y al final del código de barras.

Re: Codigo de Barras y tUtilPrn

PostPosted: Mon Feb 26, 2018 9:02 pm
by cmsoft
Estimado Caducca:
Una solucion puede ser la siguiente
Code: Select all  Expand view

AddFontResource( "i2of5txt.ttf" ) // Este es el nombre de la fuente de tu codigo de barra, yo uso esta para interleave 2 de 5
// Lo bueno de usar addfontresourse es que no tiene que estar instalada la fuente, solo debes distribuirla con tu programa.
nIndX := oPrn:nVertRes() / 7016  // Aca simplemente ajusto segun la definicion de la impresora
nIndY := oPrn:nHorzRes() / 4958
DEFINE FONT oFont4 NAME "Interleaved 2of5 Text"    SIZE 25*nIndX, 170*nIndY
PRINT oPrn NAME "Ejemplo" PREVIEW
         PAGE
            oPrn:Say(100*nIndX - (nRow*6),100*nIndY , CodigoBarra(STRTRAN(STR(nCodbar,12)," ","0")),oFont4)
         ENDPAGE
ENDPRINT

STATIC FUNCTION CodigoBarra( x )
LOCAL i, bar := {}, j := 0, bar1 := {}, cBarr := ""
// Para este tipo de font, toma de a pares y los representa con los caracteres desde el 48 al 97 y del 192 al 241
FOR i := 48 TO 97
       AADD(bar ,CHR(i))
       AADD(bar1,STRTRAN(STR(j,2)," ","0"))
       j++
NEXT i
FOR i := 192 TO 241
       AADD(bar,CHR(i))
       AADD(bar1,STRTRAN(STR(j,2)," ","0"))
       j++
NEXT i
// Aca recorro el string que le paso de a dos y voy armando el codigo que lo representa
FOR j := 1 TO LEN(x)-1 STEP 2
    i := ASCAN(bar1,SUBSTR(x,j,2))
    cBarr := cBarr + bar[i]
NEXT j
// En el caso de este font, para que el lector de codigos de barra lo lea, el inicio y cierre del codigo de barra esta determinado por parentesis, asi que se los agrego
RETURN "("+cBarr+")"
 

Espero te sirva el dato, cualquier duda a tu disposicion.
Saludos

Re: Codigo de Barras y tUtilPrn

PostPosted: Wed Feb 28, 2018 1:02 pm
by oliveiros junior
Olá,

Utilizo a TImprime e a UtilPrn, ótimas classes. Para gerar código de barras com elas e a barlib do caetano, faço assim:

::Salto()
aCoord := ::oPrn:Cmtr2Pix( ::nLinea, 1.00 )

INT25( aCoord[ 1 ], aCoord[2], AllTrim( cCodigo_Barra ), ::oPrn, .F., 0, .T., 0.30, 1.20 )

*---------------------------------------------------------------------------------------------------------------*
INT25, intercalado 2 de 5 para boleto bancário e funciona bem.
Qualquer coisa manda teu e-mail que te passo um exemplo completo.

Att.,

Oliveiros Junior

Re: Codigo de Barras y tUtilPrn

PostPosted: Wed Feb 28, 2018 3:11 pm
by caducca
Gracias a todos. Solucione con la forma que me indico oliveiros junior porque me resulto la mas fácil de implementar.
Gracias