Jasper gerando um PDF que renderiza HTML

5 respostas
TinTi

A situação é a seguinte.

Eu tenho um relatório com cabeçalho e rodapé tudo certinho.
No corpo deste relatório tenho um campo textField, que é onde quero exebir alguns dados do banco.
Esses dados estão salvos no banco em formato RTF, e então eu converto tudo pra HTML.
Pego esse HTML e jogo no textField e seto markup = html para esse elemento.

O problema é que esse conteúdo que vai ser exibido tem os símbolos ‘<’, ‘>’ e ‘&’, e sempre que eu jogo um deles na tela, o textField se perde e não renderiza o HTML, mostrando o código HTML.

Ja tentei passando esses elementos como código (& l t ; ou \u003C para o <, por exemplo) e mesmo assim não consegui.
A solução que achamos aqui seria substituir os símbolos que estão dando problemas por outros símbolos (« para <, por exemplo) mas o melhor mesmo seria conseguir fazer a renderização correta do HTML.

Alguem pode me ajudar? :?

5 Respostas

filipenf

No caso você teria que substituir os caracteres < por < ( com o ; ) e > por > não lembro agora como fica o & acho q é & ou algo do gênero.

TinTi

Arrumei meu primeiro post, coloquei o código & l t ; com as letras todas juntas e o fórum interpretou como sendo um '<'.
Eu ja tentei usar esses códigos para os sinais '<' e '>' e não funcionou.

É como se o jasper fizesse a interpretação do & l t ; antes de exibir na tela, e quando vai exibir é que ele se preocupa com o HTML tendo assim uma abertura de tag randômica no meio de todo o código. O '<' que foi interpretado anteriormente do & l t ; e assim invalida o HTML por causa do símbolo ali no meio.

Fica algo mais ou menos assim

<html>
    <boby>
        <table>
            <tr>
                <td>
                    & l t ;
                </td>
            </tr>
        </table>
    </boby>
</html>
filipenf

Muito estranho, seria muita tolice do jasper fazer esta conversão. Você tem como colar o código que usou aí ?

TinTi

Eu achei que estivesse funcionando, e realmente funcionou.
O meu problema mesmo está na minha classe Java e não no Jasper.

O que eu fiz que funcionou foi, em modo de debug, modificar o valor diretamente na variável antes de retornar.
Se eu simplismente inserir o código & l t ; o java converte ele para < antes de retornar o valor.

filipenf

Acho que não entendi o que você quis dizer com " Se eu simplismente inserir o código & l t ; o java converte ele para < antes de retornar o valor. ". O Java não faz isso, algum outro código está fazendo, pode ser o engine do jasper ou o seu código, mas o java não.

Criado 19 de junho de 2009
Ultima resposta 22 de jun. de 2009
Respostas 5
Participantes 2