Olá a todos =]
Estou tendo uma duvida relacionada a como adicionar Unicode ao PDF exportado do Jasper. No view do proprio Jasper eu consigo usar unicode, por exemplo “\u2663” no viewer do jasper vira um nipe de ‘paus’, do baralho. Para isto acontecer, editei isto no XML:
<?xml version="1.0" encoding="UTF-8"?>No codigo onde chamo o Jasper:
parameters.put("teste", "wololo");
// Grava Código de Autenticação
relatorio.mtGravaCodigoAutenticacaoDocumento(this.getConexaoBD(), aluno, vidaAcademica, (String)parameters.get("codigoAutenticacao"), 3, "-");
// lista contendo 1 elemento, a classe alimentada
String arqJasper = "report1.jasper";
if(graduacao) {
arqJasper = "report1.jasper";
}
String caminho = this.getClass().getResource("").getPath().toString() + "/jasper/" + arqJasper;
JasperPrint rel = JasperFillManager.fillReport(caminho, parameters, this.getConexaoBD());
HashMap fontes = new HashMap();
HashMap fontMap = new HashMap();
FontKey key = new FontKey("Arial", false, false);
PdfFont font = new PdfFont("C:/windows/Fonts/ARIAL.TTF", com.lowagie.text.pdf.BaseFont.IDENTITY_H ,true);
fontMap.put(key,font);
//
ByteArrayOutputStream byteReport = new ByteArrayOutputStream();
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, rel);
exporter.setParameter(JRPdfExporterParameter.CHARACTER_ENCODING, "UTF-8");
exporter.setParameter(JRPdfExporterParameter.FONT_MAP, fontMap);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, byteReport);
exporter.exportReport();
//
byte[] bytes = byteReport.toByteArray();
this.getResponse().setContentType("application/pdf");
this.getResponse().setContentLength(bytes.length);
ServletOutputStream outputStream = this.getResponse().getOutputStream();
outputStream.write(bytes, 0, bytes.length);
outputStream.flush();
outputStream.close();
O problema que ocorre é o seguinte: No iReport, se eu dou preview, no view do proprio Jasper eu vejo o nipe de paus certinho. Se eu uso em uma parte de uma string, ele fica negrito, possui as tags basicas do html.
Agora, visualizando como PDF, eu consigo ver o resultado das tags HTML, porém o nipe de paus nao.
Se eu executo o relatório via Java ultilizando o codigo acima, eu consigo visualizar o nipe de paus corretamente no PDF, porém as tags HTML nao aparecem, o texto não se formata. Eu precisaria de um modo que o PDF leia tanto as tags HTML basicas como bold, italico, br etc, quanto ler também os /u dos codigos unicode. Alguem sabe uma solução para isto ?
PS: Estou usando Arial, uma fonte WINDOWS para ler o unicode. Gostaria de saber se existe alguma fonte que faça o mesmo e tenha em Linux também.
Obrigado pela atenção, agradeço des de já pela pasciencia.
[]´s Gabriel. 8)