Código de barra

35 respostas
C

Pessoal, alguém ai conhece algum pacote free para geração de código de barra??! Preciso gerar os códigos como imagens e salvá-las… Para posteriormente inseri-las em JPanels, etc, para impressão em conjunto com outros dados :slight_smile:

Obrigado!

35 Respostas

T

Você vai imprimir um JPanel? Em vez disso use o tal do JasperReports/iReport para imprimir tudo que você quer (incluindo códigos de barras).

C

Na verdade eu não vou imprimir o JPanel, vou apenas representar um cartão tamanho padrão (igual cartão de crédito) com foto, nome e um código de barras… O Editor gráfico é para possibilitar a criação de layouts para os cartões, gerando assim um arquivo com o tipo e as coordenadas de cada entidade…

Alguma dica??!

Obrigado!

T

Hum, na verdade desenhar códigos de barras é relativamente simples, se você for usar o código 3 de 9 (letras e dígitos) ou 2 de 5 (apenas dígitos), já que você só precisa desenhar barras de duas larguras - “larga” e “estreita” e de duas cores - “preta” e “branca”, e combinar essas barras segundo a definição.

http://www.spatula.net/proc/barcode/code25.src
http://www.spatula.net/proc/barcode/i25.src
http://www.spatula.net/proc/barcode/code39.src

Eu sei que existem fontes TrueType com códigos de barras, mas não recomendaria seu uso porque é necessário instalá-las na máquina do cliente (por exemplo, no caso do Windows em c:\windows\fonts), ou usar um método complicado de carregá-las a partir de arquivos.

C

Muito obrigado! Agora preciso só avaliar qual sistema de código de barras devo utilizar aqui… ehehe

Estrelas para vc!

B

Ola a todos!

Vou aproveitar este tópico !

Preciso imprimir na tela um código de barras, mas é o padrão PDF417 (bidimensional). A imagem dele é esta:

Tudo que eu achei até agora, inclusive aqui no GUJ faz referência aos padrões “comuns” (code 128, codabar, etc.)

Alguem tem alguma dica, ou um caminho das pedras?

Valeu
Babol

H

Tem um projeto de um camarada chamado pdf417lib no sourceforge já usei para codificação de barras em postscript. Dê uma olhada porque tá muito fácil a big class do cara.
Faça um algoritmo para renderizar (java 2D) através do código gerado por ela.

B

hashcode:
Tem um projeto de um camarada chamado pdf417lib no sourceforge já usei para codificação de barras em postscript. Dê uma olhada porque tá muito fácil a big class do cara.
Faça um algoritmo para renderizar (java 2D) através do código gerado por ela.

Caro hashcode,

Durante minha busca eu até vi este projeto, mas aqui no trabalho eu não consigo baixar .zip (parece brincadeira…), então não pesquisei a fundo. Somente hoje eu consegui este zip, mas independente disso, obrigado pela dica, esta sendo super útil

Como vc falou, a classe é “big”, mas nao to entendendo a saída do programa. Se faço assim: java Pdf417lib teste.txt teste ele cria um arquivo teste.txt desta forma:
/Times findfont
12 scalefont setfont
100 80 moveto
(A PDF417 example.)show
stroke
100 100 translate
43.0 18.0 scale
86 12 1 [86 0 0 -12 0 12]{<
00AB8AC7C2B0E2A3F0175B
00AB857BC3C960ACF0175B
00AB9507C540EAF0F0175B
00ABA820C9EFA50830175B
00AB947DC08D651DF0175B
00AB828F5F94614130175B
00ABAC63DD93EB11F0175B
00AB8168D983650210175B
00ABAC83D8CC60B170175B
00ABAE7CC613AB9CF0175B
00AB963DD7C2E58DF0175B
00AB9760D770E05CD0175B>}image
showpage

Quando vc diz que eu preciso renderizar, seria esta informação impressa?

Obrigado pela ajuda
Babol

B

Babol:
hashcode:
Tem um projeto de um camarada chamado pdf417lib no sourceforge já usei para codificação de barras em postscript. Dê uma olhada porque tá muito fácil a big class do cara.
Faça um algoritmo para renderizar (java 2D) através do código gerado por ela.

Caro hashcode,

Durante minha busca eu até vi este projeto, mas aqui no trabalho eu não consigo baixar .zip (parece brincadeira…), então não pesquisei a fundo. Somente hoje eu consegui este zip, mas independente disso, obrigado pela dica, esta sendo super útil

Como vc falou, a classe é “big”, mas nao to entendendo a saída do programa. Se faço assim: java Pdf417lib teste.txt teste ele cria um arquivo teste.txt desta forma:
/Times findfont
12 scalefont setfont
100 80 moveto
(A PDF417 example.)show
stroke
100 100 translate
43.0 18.0 scale
86 12 1 [86 0 0 -12 0 12]{<
00AB8AC7C2B0E2A3F0175B
00AB857BC3C960ACF0175B
00AB9507C540EAF0F0175B
00ABA820C9EFA50830175B
00AB947DC08D651DF0175B
00AB828F5F94614130175B
00ABAC63DD93EB11F0175B
00AB8168D983650210175B
00ABAC83D8CC60B170175B
00ABAE7CC613AB9CF0175B
00AB963DD7C2E58DF0175B
00AB9760D770E05CD0175B>}image
showpage

Quando vc diz que eu preciso renderizar, seria esta informação impressa?

Obrigado pela ajuda
Babol

Cara, desconsidere esta mensagem, descobri como faz. Tem que mandar no formato postscript…

Agora vou partir para a segunda fase da sua sugestão (e a mais dificil). Renderizar a imagem usando 2D (Não faço nem ideia de como fazer isso, mas vamos la!).

Valeu pela força!
Babol

H

Divirta-se com
e668. Creating a Buffered Image from an Array of Color-Indexed Pixel Values
http://javaalmanac.com/egs/java.awt.image/Mandelbrot2.html
Pode-se fazer também um JPG ou TIFF com esse tipo de dados bitmap sem precisar codificar em demasia http://schmidt.devlib.org/java/image-io-libraries.html

Obs.: Quando vc conseguir fazer esse mangue aí manda pro cara do pdf417lib, se for open source né!! :smiley:

H

thingol:
Hum, na verdade desenhar códigos de barras é relativamente simples, se você for usar o código 3 de 9 (letras e dígitos) ou 2 de 5 (apenas dígitos), já que você só precisa desenhar barras de duas larguras - “larga” e “estreita” e de duas cores - “preta” e “branca”, e combinar essas barras segundo a definição.

http://www.spatula.net/proc/barcode/code25.src
http://www.spatula.net/proc/barcode/i25.src
http://www.spatula.net/proc/barcode/code39.src

Eu sei que existem fontes TrueType com códigos de barras, mas não recomendaria seu uso porque é necessário instalá-las na máquina do cliente (por exemplo, no caso do Windows em c:\windows\fonts), ou usar um método complicado de carregá-las a partir de arquivos.

Xi cara não é o caso de pdf417 ela é de leitura bi (2D) e não linar como as outras.

T

PostScript é uma linguagem de programação que normalmente é usada para enviar comandos para impressoras. Embora não esteja com o guia de referência do PostScript aqui, dá a impressão que esses códigos hexadecimais representam um bitmap, que pode ser plotado com Java2D ou a API de sua preferência. Por exemplo, cada linha está começando com 00AB, ou seja, em binário daria 0000.0000.0000.0000.1010.1011 - se os bits 0 forem branco e 1 forem preto, então dá para você começar a plotar os pixels.

B

Caros hashcode e thingol
Encontrei um exemplo no site da sun onde o ele exibe, via applet, um programa que exibe somente imagens no formato .ps. (seguindo sugestão do hashcode)

É claro que todos os exemplos citados imprimem exceto o que é criado pelo fonte do pdf417lib.
O exemplo eu obtive neste site:
http://java.sun.com/products/java-media/2D/samples/index.html
Baixei o zip do "PostscriptViewer Demo" mas na hora de executar aparece o erro:

Lexical error at line 8, column 27. Encountered: "<" (60), after : ""

Alguem tem alguma dica ou saida para isso?

Valeu!

H

Taca o ps aqui para darmos uma olhada.

B

Aqui esta o arquivo

B

Aqui esta o arquivo criado pelo programada pdf417lib.

B

Aqui esta o .ps que nao funciona no programa. Este foi criado pelo pdf417lib (arquivos.ps)

O outro abre sem problemas (tiger.ps)

B

to tentando colocar os ps mas nao to conseguindo…

B

to tentando inserir, mas nao ta indo…
vamos ver agora
O que nao funciona é o arquivos.ps. Este foi gerado pelo pdf417lib

H

Dei uma olhada no seu arquivo e vi que ele está correto.
Acho que temos aí um problema do analizador lexíco.
Tente quebra uma linha depois da { e antes … o que eu quero dizer é isso :smiley:

stroke
100 100 translate
43.0 18.0 scale
86 12 1 [86 0 0 -12 0 12]{
<
00AB8AC7C2B0E2A3F0175B
00AB857BC3BBA0ACF0175B
00AB9507C869EAF0F0175B
00ABA820CD73E50830175B
00AB947DCEC6E51DF0175B
00AB828F49D0E14130175B
00ABAC63DE8C6B11F0175B
00AB8168D983650210175B
00ABAC83C81960B170175B
00ABAE7CCF5F2B9CF0175B
00AB963DC159E58DF0175B
00AB9760DB20E05CD0175B
>
}image
showpage

Sacou?! :smiley: Sinal de maior e menor sozinhos em uma linha.

B

hashcode:
Dei uma olhada no seu arquivo e vi que ele está correto.
Acho que temos aí um problema do analizador lexíco.
Tente quebra uma linha depois da { e antes … o que eu quero dizer é isso :smiley:

stroke
100 100 translate
43.0 18.0 scale
86 12 1 [86 0 0 -12 0 12]{
<
00AB8AC7C2B0E2A3F0175B
00AB857BC3BBA0ACF0175B
00AB9507C869EAF0F0175B
00ABA820CD73E50830175B
00AB947DCEC6E51DF0175B
00AB828F49D0E14130175B
00ABAC63DE8C6B11F0175B
00AB8168D983650210175B
00ABAC83C81960B170175B
00ABAE7CCF5F2B9CF0175B
00AB963DC159E58DF0175B
00AB9760DB20E05CD0175B
>
}image
showpage

Sacou?! :smiley: Sinal de maior e menor sozinhos em uma linha.

E´hashcode… entendi, implementei, mas nao funcionou…mesmo erro.
Lexical error at line 5, column 1. Encountered: “<” (60), after : “”.

:cry:

Nao sei se o problema esta no programa que le, ou no programa que cria.
Vc usou o mesmo programa que eu pra visualizar o erro?

H

Use ghostscript com o gsview para visualizar.

B

Estou usando este programa. Mas quando eu clico só aparece o desenho direto, não aparece o fonte. Alias, nao sei como fazer para aparecer o fonte da imagem.

Mas eu estava me referindo ao programa java que le o .ps. Vc havia comentado que ja fez algo deste tipo.

Agora não faco nem ideia de como consertar isso.
Valeu!

H

Eu só programo mono plataforma(Unix), onde sempre que preciso de algo mais bizarro utilizo ferramentas prontas. Exemplo para esse projeto que envolvia conversão de ps para tiff e jpg fiz o seguinte:

Pego o arquivo ps chamado arquivo.ps e executo.

gs -dBATCH -dNOPAUSE -sDEVICE=jpeg -sOutputFile=teste.jpg arquivo.ps

e pego a saída do o teste,jpg.
Com o ghostscript vc pode criar pdf, concatenar imagens, etc. Ele fica como filtro de documentos tanto para impressão na tela ou impressão física em papel.
Não sei se é o seu caso mas é muito bom mesmo.

B

hashcode:
Eu só programo mono plataforma(Unix), onde sempre que preciso de algo mais bizarro utilizo ferramentas prontas. Exemplo para esse projeto que envolvia conversão de ps para tiff e jpg fiz o seguinte:

Pego o arquivo ps chamado arquivo.ps e executo.

gs -dBATCH -dNOPAUSE -sDEVICE=jpeg -sOutputFile=teste.jpg arquivo.ps

e pego a saída do o teste,jpg.
Com o ghostscript vc pode criar pdf, concatenar imagens, etc. Ele fica como filtro de documentos tanto para impressão na tela ou impressão física em papel.
Não sei se é o seu caso mas é muito bom mesmo.

Entendi…
é, mas o meu problema aqui é que aquela classe que vc sugeriu (a pdf417lib) gera este codigo (no formato .ps), mas a outra aplicacao java que le este ps não esta conseguindo ler.
Olha so, eu coloquei o resultado no ultraedit e olha como saiu:
stroke
100 100 translate
43.0 18.0 scale

86 12 1 [86 0 0 -12 0 12]{<

00AB8AC7C2B0E2A3F0175B

00AB857BC3BBA0ACF0175B

00AB9507C869EAF0F0175B

00ABA820CD73E50830175B

00AB947DCEC6E51DF0175B

00AB828F49D0E14130175B

00ABAC63DE8C6B11F0175B

00AB8168D983650210175B

00ABAC83C81960B170175B

00ABAE7CCF5F2B9CF0175B

00AB963DC159E58DF0175B

00AB9760DB20E05CD0175B>}imauge
showpage

Viu como pulou algumas linhas. Sera que pode ser isso? No ultraedit mostra um “quadrado” no fim de cada linha.
Ah, eu voltei ao normal, ja que aquela sugestao sua não funcionou.

Valeu

H

Tenta assim

stroke
/tamanho 16 string def
100 100 translate
43.0 18.0 scale
86 12 1 [86 0 0 -12 0 12]
{currentfile tamanho readhexstring pop} image
00AB8AC7C2B0E2A3F0175B
00AB857BC3BBA0ACF0175B
00AB9507C869EAF0F0175B
00ABA820CD73E50830175B
00AB947DCEC6E51DF0175B
00AB828F49D0E14130175B
00ABAC63DE8C6B11F0175B
00AB8168D983650210175B
00ABAC83C81960B170175B
00ABAE7CCF5F2B9CF0175B
00AB963DC159E58DF0175B
00AB9760DB20E05CD0175B

showpage
B

hashcode:
Tenta assim

stroke
/tamanho 16 string def
100 100 translate
43.0 18.0 scale
86 12 1 [86 0 0 -12 0 12]
{currentfile tamanho readhexstring pop} image
00AB8AC7C2B0E2A3F0175B
00AB857BC3BBA0ACF0175B
00AB9507C869EAF0F0175B
00ABA820CD73E50830175B
00AB947DCEC6E51DF0175B
00AB828F49D0E14130175B
00ABAC63DE8C6B11F0175B
00AB8168D983650210175B
00ABAC83C81960B170175B
00ABAE7CCF5F2B9CF0175B
00AB963DC159E58DF0175B
00AB9760DB20E05CD0175B

showpage

Se eu deixar assim:
/tamanho 16 string def
Aparece este erro:
java.lang.IllegalStateException: Null token encountered; last unknown identifier was string

Caso eu altere para isso:
//tamanho 16 string def
o erro e este:
java.lang.IllegalStateException: Null token encountered; last unknown identifier was tamanho

Por acaso este campo é so copiar mesmo, ou o “tamanho” e alguma coisa que eu tenho que mudar?
{currentfile tamanho readhexstring pop} image

Valeu!!

H

Tá de rosca hem?!! :smiley:
Esse analizador de postscript tá com um encosto hem!

/tamanho 16 string def

Isso é uma definição de uma variável do tipo string com 16 caracteres.
Tenta definir como função

/tamanho{ 16 string }def

Tem que ter esse variável, essa função é o buffer.

Faça as orações!! :smiley:

B

hashcode:
Tá de rosca hem?!! :smiley:
Esse analizador de postscript tá com um encosto hem!

/tamanho 16 string def

Isso é uma definição de uma variável do tipo string com 16 caracteres.
Tenta definir como função

/tamanho{ 16 string }def

Tem que ter esse variável, essa função é o buffer.

Faça as orações!! :smiley:

Cara,
Vo te falar hein!

Não funcionou…
java.lang.IllegalStateException: Null token encountered; last unknown identifier was image

O pior é que o analisador eu peguei do site da sun…
Zuado…
Outra sugestao

Valeu

H

Tenta assim

stroke
 /tamanho{ 16 string } bind def
 100 100 translate
 43.0 18.0 scale
 86 12 1 [86 0 0 -12 0 12]
 {currentfile tamanho readhexstring pop} image
 00AB8AC7C2B0E2A3F0175B
 00AB857BC3BBA0ACF0175B
 00AB9507C869EAF0F0175B
 00ABA820CD73E50830175B
 00AB947DCEC6E51DF0175B
 00AB828F49D0E14130175B
 00ABAC63DE8C6B11F0175B
 00AB8168D983650210175B
 00ABAC83C81960B170175B
 00ABAE7CCF5F2B9CF0175B
 00AB963DC159E58DF0175B
 00AB9760DB20E05CD0175B
 
 showpage

ou

stroke
100 100 translate
43.0 18.0 scale^M
86 12 1 [86 0 0 -12 0 12]
{currentfile 16 string readhexstring pop} image
00AB8AC7C2B0E2A3F0175B
00AB857BC3BBA0ACF0175B
00AB9507C869EAF0F0175B
00ABA820CD73E50830175B
00AB947DCEC6E51DF0175B
00AB828F49D0E14130175B
00ABAC63DE8C6B11F0175B
00AB8168D983650210175B
00ABAC83C81960B170175B
00ABAE7CCF5F2B9CF0175B
00AB963DC159E58DF0175B
00AB9760DB20E05CD0175B

showpage

Minhas habilidades estão acabando. :slight_smile:

B

Caro hascode,
Seu esforço par me ajudar chega a ser heróico!
Mas não funcionou…

Estou com duvida no analisador. Este eu peguei do site da sun.
Como todos os codigos que vc passou criaram um arquivo com a imagem, so me resta suspeitar dele.

se vc puder, de uma olhada no analisador, so pra ver o problema, o link para baixar (20kb) é :
http://java.sun.com/products/java-media/2D/samples/index.html é o zip do “PostscriptViewer Demo”

No seu caso, vc mesmo criou este analisador?
Se vc tiver outra sugestão…sera super hiper bem vinda

Cara, muito obrigado!

H

Qual o retorno de erro deste código abaixo

stroke
 100 100 translate
 43.0 18.0 scale
 86 12 1 [86 0 0 -12 0 12]
 {currentfile 16 string readhexstring pop} image
 00AB8AC7C2B0E2A3F0175B
 00AB857BC3BBA0ACF0175B
 00AB9507C869EAF0F0175B
 00ABA820CD73E50830175B
 00AB947DCEC6E51DF0175B
 00AB828F49D0E14130175B
 00ABAC63DE8C6B11F0175B
 00AB8168D983650210175B
 00ABAC83C81960B170175B
 00ABAE7CCF5F2B9CF0175B
 00AB963DC159E58DF0175B
 00AB9760DB20E05CD0175B
 
 showpage

?

B

esse:
java.lang.IllegalStateException: Null token encountered; last unknown identifier was image

H

Caro Babol,
Estou sem tempo para dar uma olhada nesse analizador. Se o código fonte for opensource , procure no analizador lexíco parser para a expressão “readhexstring” pois acho que é esse o problema. Os programas em postscript deste tópico estavam totalmente “validável”, mas na API que vc está usando não renderiza nada. Recomendo a vc duas coias.
1ª Tenta converter os dados hexa para um formato tipo tiff, jpg, png etc.
ou
2ª Fazer uma tabela de equivalência entre o hexa e o resultado em pixels

Tá sofrendo hen?

B

Caro hascode…
Sofrendo é pouco, mas resolvi o problema.

Deixei de lado a criação do arquivo em ps e passei a me atentar a criação de uma imagem.

No próprio fonte do pdf417lib existe essa opção, meio escondida, mas existe.

Ai procurei na net como fazer para criar uma imagem.
Ponto final.

Cara, vo te falar, rendeu um best seller esta solução.
Valeu pela ajuda.

Até a proxima dúvida…hehehe
Babol

H

Tá na manha. :smiley:

Criado 17 de julho de 2006
Ultima resposta 25 de jul. de 2006
Respostas 35
Participantes 4