mister_m 25 de abr. de 2005
O encoding do xml do relatório não tem nada a ver com o encoding do html exportado pelo Jasper. Existe um parâmetro de exportação do relatório que configura isso. Poste o código que você está usando para exportar como html que posso ajudar.
edilmar 25 de abr. de 2005
public void GerarRelat (
String Titulo , String NomeArq ,
int Lingua , ResultSet rs
) throws IOException {
URL URLNomeArq = cl . getResource ( NomeArq );
Map parameters = new HashMap ();
parameters . put ( "Sistema" , Sistema );
parameters . put ( "Titulo" , Titulo );
parameters . put ( "DataHora" , FormatDate . getDataAtual ( Lingua ) + " - " + FormatTime . getHoraAtual ( Lingua ));
//
try {
JasperReport jasperReport = ( JasperReport ) JRLoader . loadObject ( URLNomeArq );
JasperPrint jasperPrint = JasperFillManager . fillReport ( jasperReport , parameters , new JRResultSetDataSource ( rs ));
JasperViewer . viewReport ( jasperPrint , false );
}
catch ( JRException e ) { e . printStackTrace (); }
}
Eu uso o cl (classloader) para eu poder abrir o arquivo Jasper mesmo se ele esteja dentro de um JAR em uma aplicacao Swing Java Web Start.
edilmar 25 de abr. de 2005
Te passei o codigo da versao Swing, mas na versao WEB esta assim:
public void GerarHTML (
String Titulo , String NomeArq , String URLImages ,
int Lingua , ResultSet rs
) throws IOException , ServletException {
File reportFile = new File ( context . getRealPath ( NomeArq ));
//
Map parameters = new HashMap ();
parameters . put ( "BaseDir" , reportFile . getParentFile ());
parameters . put ( "Sistema" , Sistema );
parameters . put ( "Titulo" , Titulo );
parameters . put ( "DataHora" , FormatDate . getDataAtual ( Lingua ) + " - " + FormatTime . getHoraAtual ( Lingua ));
//
try {
JasperReport jasperReport = ( JasperReport ) JRLoader . loadObject ( reportFile . getPath ());
JasperPrint jasperPrint = JasperFillManager . fillReport ( jasperReport , parameters , new JRResultSetDataSource ( rs ));
JRHtmlExporter exporter = new JRHtmlExporter ();
Map imagesMap = new HashMap ();
response . setContentType ( "text/html" );
PrintWriter out = response . getWriter ();
request . getSession (). setAttribute ( "IMAGES_MAP" , imagesMap );
exporter . setParameter ( JRExporterParameter . JASPER_PRINT , jasperPrint );
exporter . setParameter ( JRExporterParameter . OUTPUT_WRITER , out );
exporter . setParameter ( JRHtmlExporterParameter . IMAGES_MAP , imagesMap );
exporter . setParameter ( JRHtmlExporterParameter . IMAGES_URI , URLImages );
exporter . exportReport ();
}
catch ( JRException e ) {
return ;
}
}
edilmar 25 de abr. de 2005
Coloquei a linha abaixo e funcionou:
response . setCharacterEncoding ( "ISO-8859-1" );
Contudo, ao olhar o fonte da pagina HTML gerada, esta assim:
& lt ; meta http - equiv = "Content-Type" content = "text/html; charset=UTF-8" & gt ;
Poderia me explicar como funciona isso? Meu XML esta ISO, meu response esta ISO, mas mesmo assim o Jasper insiste em colocar este charset UTF no <head> da pagina gerada?
mister_m 25 de abr. de 2005
Existe um dos parâmetros em JRExporterParameter que serve justamente para definir o encoding. Basta você fazer algo como:
exporter . setParameter ( JRExporterParameter . CHARACTER_ENCODING , "ISO-8859-1" );
Note que eu não lembro exatamente o nome do atributo de JRExporterParameter, mas deve ser algo parecido com isso.
edilmar 25 de abr. de 2005
Fiz do jeito que voce falou e deu certo, arrumou o “meta” do HTML.
Obg!!!