Jasper/iReport - Problemas caracteres / gerar imagem

3 respostas
C

Boa tarde!

Estou precisando gerar um relatório feito no jasper/itext como imagem, ou seja, em vez de criar em PDF ou outro tipo de documento, preciso que o resultado final seja em imagem (de preferência em JPG).

Isto por causa de diversos chamados que estamos tendo de pessoas que não estão conseguindo imprimir em PDF, mais especificamente nas impressoas officejet da HP (principalmente J3680).

Em muitos casos o texto é impresso com um caracter asii a mais, por exemplo:

Onde deveria ser [color=green]NOME[/color], está saindo [color=red]OPNF[/color].
[color=green]Validade para pagamento:[/color] fica [color=red]WBMEBEF!QBSB!QBHBNFOUP;[/color]
Ocorre em TODO o relatório, até números.

Já testamos em várias impressoas no trabalho e nenhuma deu problema, mas há relatos de que o mesmo ocorreu com algums modelos Lexmark.

O relatório usa fontes que acredito ser padrão do próprio Windows: Sansserif e Helvetica.

Já fiz vários exemplos de converter PDF em imagem, mas a qualidade da imagem não é boa e o código de barras que está no relatório não está sendo reconhecido nas leitoras.

Alguém sabe o que pode estar acontecendo com este problema dos caracteres ou uma forma de gerar o relatório como imagem.

O relatório tem apenas uma página.

Vlw!

3 Respostas

C

fiz um teste agora com um relatório impresso, com os caracteres trocados impresso por um usuário.

parece que o único componente que está normal é o código de barras, a leitura (utilizando um leitor claro ehehe) está certa: [color=green]8072109078000[/color].

Mas a numeração que representa o código de barras, que fica ao lado da imagem está assim: [color=red]918321:189111[/color].

Então acredito que podemos descartar a falta de alguma fonte na máquina do usuário, talvez seja alguma codificação específica da impressora… ou não…

executando este código:

public static void main(String[] args) { String teste = "[telefone removido]-00"; char[] ch = teste.toCharArray(); for (char c : ch) { System.out.print(c); byte b = (byte)c; char c2 = (char)(b+1); System.out.println(" --> " + b + " --> " + c2); } }

Confirma a teoria de que realmente está acrescentando 1 no ASCII dos textos.

Alguém já viu algo do tipo?

Lembrando que não acontece com todas as impressoras.

A codificação dos campos de textos utilizados no relatório (iReport) é: CP1252 (Western European ANSI aka WinAnsi).

vlw!

C

bom galera… consegui ‘contornar’ o problema gerando imagem do relatório Jasper/iReport mesmo.

vlw!

C

hummmm… :?

sugestões ainda são bem-vindas! ehehe

a imagem não fica com uma qualidade boa para os códigos de barras.

Criado 31 de agosto de 2009
Ultima resposta 24 de set. de 2009
Respostas 3
Participantes 1