Criei um código teste para gerar um rtf a partir de um jasper, bem simples. O rtf é gerado, mas com um cabeçalho que eu não compreendo, que imaginei que o reader (um Word ou Open Office) ia ler mas não lê. Alguém saberia dizer o que fiz de errado, ou que está faltando, sei lá…
OBS: Eu gerei um rtf muito mais facilmente com iText.
O código:
[code] InputStream inputStream = new FileInputStream( “/home/ffiaux/Desktop/iReport-1.3.1/bin/testedoc.jasper” );
Map<String, String> params = new LinkedHashMap<String, String>();
params.put( “ref”, “TESTE” );
List<AlunosAtivosBean> list = new ArrayList<AlunosAtivosBean>();
AlunosAtivosBean bean = new AlunosAtivosBean();
bean.setAlunoNome( "NOME" );
list.add( bean );
JasperPrint jasperPrint = JasperFillManager.fillReport( inputStream, params, new JRBeanCollectionDataSource( list ) );
JRRtfExporter exporter = new JRRtfExporter();
exporter.setParameter( JRExporterParameter.JASPER_PRINT, jasperPrint );
File rtf = new File( "/home/ffiaux/Desktop/teste.rtf" );
exporter.setParameter( JRExporterParameter.OUTPUT_FILE, rtf );
exporter.setParameter( JRExporterParameter.OFFSET_X, 0 );
exporter.setParameter( JRExporterParameter.OFFSET_Y, 0 );
exporter.exportReport();[/code]
A saída para o arquivo rtf, se repararem, as duas informações que eu entrei no código aparecem, são elas TESTE e NOME. Mas o leitor não visualiza nada.
{\rtf1\ansi\deff0
{\fonttbl {\f0\fnil sansserif;}}
{\colortbl ;\red0\green0\blue0;\red255\green255\blue255;}
{\info{\nofpages1}}
\viewkind1\paperw11900\paperh16840\marglsxn0\margrsxn0\margtsxn0\margbsxn0
{\*\bkmkstart JR_PAGE_ANCHOR_0_1}{\*\bkmkend JR_PAGE_ANCHOR_0_1}{\shp\shpbxpage\shpbypage\shpwr5\shpfhdr0\shpfblwtxt0\shpz1\shpleft4960\shpright6960\shptop860\shpbottom1220{\sp{\sn fFilled}{\sv 0}}{\shpinst{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\shptxt{\pard\cb2 \ql\sl232 \f0\fs20\cf1 TESTE\plain\par}}}}
{\shp\shpbxpage\shpbypage\shpwr5\shpfhdr0\shpfblwtxt0\shpz2\shpleft4920\shpright6920\shptop2800\shpbottom3160{\sp{\sn fFilled}{\sv 0}}{\shpinst{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\shptxt{\pard\cb2 \ql\sl232 \f0\fs20\cf1 NOME\plain\par}}}}
}