Código de Barras 2 de 5
Moderador: Moderadores
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Re: Código de Barras 2 de 5
É um prazer conhecer pessoas que sabem apreciar com humor um caso, às vezes, no mínimo desajeitado...
Quanto ao Boleto, por enquanto, não está no meu foco. Amanhã nunca se sabe...
Esta atual necessidade é para o desenvolvimento de uma planilha de dados, exatamente como aquela que anexei à mensagem anterior.
Contudo, me lembro muito bem que em testes que fiz, eu importava uma imagem JPG, e em seguida escrevia um texto em cima dela, o que é mais ou menos a tua necessidade, segundo entendi. Haveria uma imagem, e em espaço vazios, haveria sobre-escrito um texto ou Código de Barras. Não me lembro mais quais as funções que usei para o sobre-escrito, acredito que tenha sido o oPrinter:TextAtFont() ou oPrinter:TextOutAt().
Quanto ao Boleto, por enquanto, não está no meu foco. Amanhã nunca se sabe...
Esta atual necessidade é para o desenvolvimento de uma planilha de dados, exatamente como aquela que anexei à mensagem anterior.
Contudo, me lembro muito bem que em testes que fiz, eu importava uma imagem JPG, e em seguida escrevia um texto em cima dela, o que é mais ou menos a tua necessidade, segundo entendi. Haveria uma imagem, e em espaço vazios, haveria sobre-escrito um texto ou Código de Barras. Não me lembro mais quais as funções que usei para o sobre-escrito, acredito que tenha sido o oPrinter:TextAtFont() ou oPrinter:TextOutAt().
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Re: Código de Barras 2 de 5
Eu teria que procurar o manual, mas ao que me lembro o int2de5 é só para números. Não terá representação para letras.
Sua planilha identifica os exames que o paciênte/cliente fez no laboratório.
É esse o caminho ou estou errado?
Como esse é o CB utilizado no boleto bancário, imagine (erroneamente) que era isso que vc estava fazendo/desenvolvendo.
Isto é parte da BARLIB que gera o int25. Veja se te ajuda. Lembrando que ela foi desenvolvida para rodar no FW.
Lembrando que o CB int25 inicia com '(' e fecha com ')'. Os números são agrupados em duplas.
Sua planilha identifica os exames que o paciênte/cliente fez no laboratório.
É esse o caminho ou estou errado?
Como esse é o CB utilizado no boleto bancário, imagine (erroneamente) que era isso que vc estava fazendo/desenvolvendo.
Isto é parte da BARLIB que gera o int25. Veja se te ajuda. Lembrando que ela foi desenvolvida para rodar no FW.
Lembrando que o CB int25 inicia com '(' e fecha com ')'. Os números são agrupados em duplas.
Código: Selecionar todos
// interleave 2 of 5
// matrix 2 of 5
#include "common.ch"
static aBar:={"00110","10001",'01001','11000','00101','10100','01100',;
'00011','10010','01010'}
static cStart:='0000'
static cStop:='100'
static cMtSt:='10000' // matrix start/stop
static cInStart := '110' // industrial 2 of 5 start
static cInStop := '101' // industrial 2 of 5 stop
function _int25(cCode,lMode)
local n,cBar:='', cIz:='',cDer:='',nLen:=0,nCheck:=0,cBarra:=''
local m
default lMode to .f.
cCode:=trans(cCode,'@9') // elimina caracteres
if (nLen%2=1.and.!lMode)
nLen++
cCode+='0'
end
if lMode
for n:=1 to len(cCode) step 2
nCheck+=val(substr(cCode,n,1))*3+val(substr(cCode,n+1,1))
next
cCode += right(str(nCheck,10,0),1)
end
nLen:=len(cCode)
cBarra:= cStart
// preencoding .. interlaving
for n:=1 to nLen step 2
cIz:=aBar[val(substr(cCode,n,1))+1]
cDer:=aBar[val(substr(cCode,n+1,1))+1]
for m:=1 to 5
cBarra+=substr(cIz,m,1)+substr(cDer,m,1)
next
next
cBarra+=cStop
for n:=1 to len(cBarra) step 2
if substr(cBarra,n,1)='1'
cBar+='111'
else
cBar+='1'
end
if substr(cBarra,n+1,1)='1'
cBar+='000'
else
cBar+='0'
end
next
return cBar
function _MAT25(cCode,lCheck)
local cBar:='',cBarra:='', nCheck,n
default lCheck to .f.
cCode:=trans(cCode,'@9') // only digits
if lCheck
for n:=1 to len(cCode) step 2
nCheck+=val(substr(cCode,n,1))*3+val(substr(cCode,n+1,1))
next
cCode += right(str(nCheck,10,0),1)
end
cBar:=cMtSt
for n:=1 to len(cCode)
cBar+=aBar[val(substr(cCode,n,1))+1]+'0'
next
cBar+=cMtSt
for n:=1 to len(cBar) step 2
if substr(cBar,n,1)='1'
cBarra+='111'
else
cBarra+='1'
end
if substr(cBar,n+1,1)='1'
cBarra+='000'
else
cBarra+='0'
end
next
return cBarra
function _Ind25(cCode,lCheck)
local cBar:='',cBarra:='', nCheck,n
default lCheck to .f.
cCode:=trans(cCode,'@9') // only digits
if lCheck
for n:=1 to len(cCode) step 2
nCheck+=val(substr(cCode,n,1))*3+val(substr(cCode,n+1,1))
next
cCode += right(str(nCheck,10,0),1)
end
cBar:=cInStart
for n:=1 to len(cCode)
cBar+=aBar[val(substr(cCode,n,1))+1]+'0'
next
cBar+=cInStop
for n:=1 to len(cBar)
if substr(cBar,n,1)='1'
cBarra+='1110'
else
cBarra+='10'
end
next
return cBarra"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Re: Código de Barras 2 de 5
A tua afirmação está totalmente correta.
O 2 de 5 Intercalado é somente para números, já que eu identifico o paciente pelo número de cadastro da requisição de exame.
O código que eu usei é bem menor pois eu parto da presuposição (no meu caso, certeza absoluta) de que só números estão presentes e em número par de caracteres, já o Número da Requisição é composto por 6 dígitos. Desta forma, o teu código é bem mais seguro pois faz várias verificações que o meu não faz.
Nunca analisei o Boleto Bancário, mas o Código de Barras deles não somente composto por números ? Não estou bem certo mas acho que num dos sites li que os Bancos usam o 2 de 5. Neste caso, você precisa adotar a norma do Banco (todos os bancos
). Neste instante estou com um Boleto do Bradesco em mãos e parace-me que realmente é um 2 de 5.
Se você precisa de alfa-numérico há outras opções, como o "3 de 9" e o "Code 128".
Pelo que li nos sites visitados, o "Code 128" é o de menor tamanho e o mais confiável pois é bem mais moderno (de desenvolvimento mais recente).
O 2 de 5 Intercalado é somente para números, já que eu identifico o paciente pelo número de cadastro da requisição de exame.
O código que eu usei é bem menor pois eu parto da presuposição (no meu caso, certeza absoluta) de que só números estão presentes e em número par de caracteres, já o Número da Requisição é composto por 6 dígitos. Desta forma, o teu código é bem mais seguro pois faz várias verificações que o meu não faz.
Nunca analisei o Boleto Bancário, mas o Código de Barras deles não somente composto por números ? Não estou bem certo mas acho que num dos sites li que os Bancos usam o 2 de 5. Neste caso, você precisa adotar a norma do Banco (todos os bancos
Se você precisa de alfa-numérico há outras opções, como o "3 de 9" e o "Code 128".
Pelo que li nos sites visitados, o "Code 128" é o de menor tamanho e o mais confiável pois é bem mais moderno (de desenvolvimento mais recente).
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Re: Código de Barras 2 de 5
Minha contribuição ao tópico: um PDF que esclarece os tipos de códigos de barras, com suas características principais. É bem sucinto, mas já é uma ajuda.
http://educacaotecnologica.2000pt.net/c ... barras.pdf
http://educacaotecnologica.2000pt.net/c ... barras.pdf
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Re: Código de Barras 2 de 5
Boa tarde colegas.
Eu tenho uma Apostila com mais de 120 páginas, escrito por José Alberto Rosa Andrade (Joinville-SC), que trata de muitos tipos de Código de Barras, com todos os detalhes técnicos da formação e composição das barras.
O 2 de 5 Intercalado está acompanhado por m exemplo de programa, em Clipper, desenvolvido peolo autor em 1993.
Tem inclusive o UPC-A (de origem Americana e Canadense) (aquelas usada nos produtos de super-mercados) e também nos produtos importados. Composto por 12 dígitos, sendo um verificador, e também o UPC-E, para pequenas embalagens.
Também tem o EAN-13, o EAN-12 e o EAN-8, de origem européia.
Se alguém tiver interesse em algum específico, basta solicitar, que passo no scaner, e anexo em PDF.
Curiosidades:
1-No caso do Códigos de Barras em 2D só menciona alguns dados, como o PDF-417, que em 2,5cm x 2,5 cm de área pode armazenar até 1000 caracteres.
2-O Vericode pode armazenar de 3 a 100 caracteres em uma área a partir 4 micros quadrados.
Eu tenho uma Apostila com mais de 120 páginas, escrito por José Alberto Rosa Andrade (Joinville-SC), que trata de muitos tipos de Código de Barras, com todos os detalhes técnicos da formação e composição das barras.
O 2 de 5 Intercalado está acompanhado por m exemplo de programa, em Clipper, desenvolvido peolo autor em 1993.
Tem inclusive o UPC-A (de origem Americana e Canadense) (aquelas usada nos produtos de super-mercados) e também nos produtos importados. Composto por 12 dígitos, sendo um verificador, e também o UPC-E, para pequenas embalagens.
Também tem o EAN-13, o EAN-12 e o EAN-8, de origem européia.
Se alguém tiver interesse em algum específico, basta solicitar, que passo no scaner, e anexo em PDF.
Curiosidades:
1-No caso do Códigos de Barras em 2D só menciona alguns dados, como o PDF-417, que em 2,5cm x 2,5 cm de área pode armazenar até 1000 caracteres.
2-O Vericode pode armazenar de 3 a 100 caracteres em uma área a partir 4 micros quadrados.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Re: Código de Barras 2 de 5
Bom dia amigos.
Fui alertado que a Planilha.pdf que anexei estava SEM o Código de Barras, e sustituí o citado anexo por outro, COM o Código de Barras.
Por favor, me retornem se eventualmente ele não aparecer em virtude da falta da fonte no computador de destino. Neste caso eu anexo ela em formato JPG zipado.
Fui alertado que a Planilha.pdf que anexei estava SEM o Código de Barras, e sustituí o citado anexo por outro, COM o Código de Barras.
Por favor, me retornem se eventualmente ele não aparecer em virtude da falta da fonte no computador de destino. Neste caso eu anexo ela em formato JPG zipado.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Re: Código de Barras 2 de 5
Amiguinho,
Seu post é antigo mas vai a pergunta.
Voce implementou? de uma dica de como fez, pois se não fez eu implementei uma impressão de conteúdo de nota fiscal em arquivo .CDR(Coreldraw) que provavelmente esta perdido no oceano de informações aqui do forum.
Implementei usando um antigo exemplo em Fivewin para isto.
Seu post é antigo mas vai a pergunta.
Voce implementou? de uma dica de como fez, pois se não fez eu implementei uma impressão de conteúdo de nota fiscal em arquivo .CDR(Coreldraw) que provavelmente esta perdido no oceano de informações aqui do forum.
Implementei usando um antigo exemplo em Fivewin para isto.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Re: Código de Barras 2 de 5
Boa noite Rochinha.
Acredito que você esteja dirigindo o pedido para mim.
Neste caso, segue a minha solução, em xHarbour puro.
1-Verifico se o número de algarismos é par. Se não, acrescento "0" à esquerda:
2-Separo os caracteres em pares, já que eles devem, ser intercalados aos pares. Efetou o cálculo para cada par. O resultado é adicionado à variável "c_num25":
3-A string "c_num25" é impressa:
OBSERVAÇÕES
1-A fonte "I2OF5TXT.TTF" deve estar instalada regularmente como fonte do Windows, em "C:Windows\fonts".
2-A sequência da variável "c_num25" deve estar precedida pelo caracter "(" e seguida pelo caracter ")". Estes 2 caracteres são responsáveis pela identificação de início e fim do código de barras.
Acredito que a exposição ficou bem clara e didática.
De qualquer forma estarei à tua disposição e de todos os colegas que necessitarem.
Acredito que você esteja dirigindo o pedido para mim.
Neste caso, segue a minha solução, em xHarbour puro.
1-Verifico se o número de algarismos é par. Se não, acrescento "0" à esquerda:
Código: Selecionar todos
c_numero := IIF( LEN( c_numero ) / 2 <> INT( LEN( c_numero ) ), "0" + c_numero, c_numero )Código: Selecionar todos
c_num25 := ""
FOR nn = 1 TO LEN( c_numero ) step 2
nn1 := VAL( SUBS( c_numero, nn, 02 ) )
c_num25 += CHR( nn1 + IF( nn1<=49, 48, 0 ) + IF( nn1>=50, 142, 0 ) )
NEXT nnCódigo: Selecionar todos
oPrinter:TextAtFont( 20, n_posY+20 , "("+c_num25+")", 'I2OF5TXT', 24, 05 )1-A fonte "I2OF5TXT.TTF" deve estar instalada regularmente como fonte do Windows, em "C:Windows\fonts".
2-A sequência da variável "c_num25" deve estar precedida pelo caracter "(" e seguida pelo caracter ")". Estes 2 caracteres são responsáveis pela identificação de início e fim do código de barras.
Acredito que a exposição ficou bem clara e didática.
De qualquer forma estarei à tua disposição e de todos os colegas que necessitarem.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Código de Barras 2 de 5
Estou tentando usar o I2OF5TXT, mas quando mando imprimir par números acima de 50, imprime símbolos que não são códigos de barra. Só sai corrento quando imprime pares menores que 50.
estou usando o exemplo postado pelo Hasse.
estou usando o exemplo postado pelo Hasse.
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Código de Barras 2 de 5
Verifique se realmente a variável c_num25 está saindo com os valores corretos.
Para facilitar esta verificação grave em arquivo TXT a sequência dos valores contidos nesta variável.
Eu acredito que o teu problema esteja nela, mas também pode estar em outro detalhe qualquer.
Outro detalhe muito importante: O número de caracteres numéricos PRECISA sem em pares, como no exemplo abaixo:
6577913645 -> 10 caracteres.
657791364 -> 9 caracteres, NÃO FUNCIONA.
Neste caso você completar com um ZERO na frente.
Isto porque o 2 OF 5 Interleaved, quer dizer que os números são intercalados de dois em dois, e por este motivo há necessidade ABSOLUTA que este número de caracteres numéricos seja PAR.
Para facilitar esta verificação grave em arquivo TXT a sequência dos valores contidos nesta variável.
Eu acredito que o teu problema esteja nela, mas também pode estar em outro detalhe qualquer.
Outro detalhe muito importante: O número de caracteres numéricos PRECISA sem em pares, como no exemplo abaixo:
6577913645 -> 10 caracteres.
657791364 -> 9 caracteres, NÃO FUNCIONA.
Neste caso você completar com um ZERO na frente.
Isto porque o 2 OF 5 Interleaved, quer dizer que os números são intercalados de dois em dois, e por este motivo há necessidade ABSOLUTA que este número de caracteres numéricos seja PAR.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Código de Barras 2 de 5
Hasse,
O numero que usei como exemplo é 149121.
Eu coloquei exatamente como esta seu exemplo, a unica linha que eu modifiquei foi :
c_numero := IIF( LEN( c_numero ) / 2 <> INT( LEN( c_numero ) / 2 ), "0" + c_numero, c_numero )
porque estava dando erro.
quando separa em pares, eu dei um display dos valores e aparecerem exatamente os pares que devem ser (14 91 21).
a impressão esta no arquivo em anexo.
O numero que usei como exemplo é 149121.
Eu coloquei exatamente como esta seu exemplo, a unica linha que eu modifiquei foi :
c_numero := IIF( LEN( c_numero ) / 2 <> INT( LEN( c_numero ) / 2 ), "0" + c_numero, c_numero )
porque estava dando erro.
quando separa em pares, eu dei um display dos valores e aparecerem exatamente os pares que devem ser (14 91 21).
a impressão esta no arquivo em anexo.
- Anexos
-
Teste.pdf- impressão
- (49.6 KiB) Baixado 92 vezes
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Código de Barras 2 de 5
Nós precisamos ver o valor da variável C-Num25, antes de ser impressa.
Veja que os valores 14 e 91 estão sendo impressos corretamente.
Verifique e grave num arquivo TXT.
Podes até gravar no PDF, antes de imprimir o Código de Barras.
oPrinter:TextOut( c_num25, .T.)
oPrinter:NewLine() && possivelmente terás que cuidar para que as duas impressões não sejam sobrepostas.
oPrinter:TextAtFont( 20, n_posY+20 , "("+c_num25+")", 'I2OF5TXT', 24, 05 )
Veja que os valores 14 e 91 estão sendo impressos corretamente.
Verifique e grave num arquivo TXT.
Podes até gravar no PDF, antes de imprimir o Código de Barras.
oPrinter:TextOut( c_num25, .T.)
oPrinter:NewLine() && possivelmente terás que cuidar para que as duas impressões não sejam sobrepostas.
oPrinter:TextAtFont( 20, n_posY+20 , "("+c_num25+")", 'I2OF5TXT', 24, 05 )
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Código de Barras 2 de 5
Veja,
Voce se enganou, os numeros que imprimem corretos são o "14" e o "21", que são o primeiro e o ultimo par. O par do meio "91" que imprime errado, alias, qualquer numero maior que 50, imprime errado.
A variavel "c_num25" esta impressa na frente da barra, no pdf que esta no post anterior.
Obrigado pela paciencia.
Voce se enganou, os numeros que imprimem corretos são o "14" e o "21", que são o primeiro e o ultimo par. O par do meio "91" que imprime errado, alias, qualquer numero maior que 50, imprime errado.
A variavel "c_num25" esta impressa na frente da barra, no pdf que esta no post anterior.
Obrigado pela paciencia.
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Código de Barras 2 de 5
OK. Você está correto. Eu só digitei errado.
Os número que são impressos corretamente são os 14 e 21. No PDF não vejo o 91.
É justamente por isso é que eu quero ver o conteúdo da variável c_num25, antes de ser enviado para a impressão do Código de Barras.
Estou desconfiado que não é 91 que é enviado para a impressão.
Os número que são impressos corretamente são os 14 e 21. No PDF não vejo o 91.
É justamente por isso é que eu quero ver o conteúdo da variável c_num25, antes de ser enviado para a impressão do Código de Barras.
Estou desconfiado que não é 91 que é enviado para a impressão.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Código de Barras 2 de 5
Segue o arquivo com as variaveis impressas e o resultado e o fonte que estou testando.
- Anexos
-
teste.prg- Programa de teste
- (1.14 KiB) Baixado 97 vezes
-
teste.pdf- (55.15 KiB) Baixado 71 vezes


