Estou desenvolvendo uma aplicacao e quando eu gero o relatorio, a imagem criada apartir do JFreechart esta saindo escura no PDF. No visualizador do jasper ela sai perfeita, mas quando eu crio o pdf ela sai toda escura. Alguem sabe o que pode ser isso?
Teria o codigo para ver como vc manda a imagem para o Jasper?
N está sendo setada nenhuma cor de fundo no Ireport para a imagem?
Sua versao do Adobe Pdf é recente?
Esse é o código que eu uso para gerar o pdf. A imagem no visualizador fica perfeita. O erro so ocorre no pdf gerado.
public void geraRelatorio(Map<String, RespostaQuestaoBean> resp, String caminhoArquivoPDF){
try {
Map<String, Object> params = new HashMap<String, Object>();
JRBeanCollectionDataSource listaDataSources = null;
String reportSource = "";
params.put("enderecoSubRelatorio1", "Relatorios/GruposRelatorio.jasper");
Double percentagens[] = new Double[2];
Integer totais[] = new Integer[2];
Integer quantidadeRespostas[] = new Integer[3];
try{
List<InformacoesRelatorio> listAll = hashMapRespostasToListRelatorios(resp, percentagens);
BufferedImage imagem = gerarGraficoBarraVertical("Avaliação da Visualização da Informação em EIS", "Grupo de Questões", "Quantidade", listAll);
params.put("imagem", imagem);
obtemValoresDePercentagemETotais(percentagens, totais, quantidadeRespostas, listAll);
listaDataSources = new JRBeanCollectionDataSource(listAll);
params.put("resultados", listaDataSources);
params.put("percentualConformeAplicavel", percentagens[0]);
params.put("percentualNaoConformesAplicavel", percentagens[1]);
params.put("totalQuestoesAnalisadas", totais[0]);
params.put("totalQuestoesAplicaveis", totais[1]);
params.put("totalQuestoesConformes", quantidadeRespostas[0]);
params.put("totalQuestoesNaoConforme", quantidadeRespostas[1]);
params.put("totalQuestoesNaoAplicaveis", quantidadeRespostas[2]);
reportSource += "Avaliacao.jasper";
JREmptyDataSource ED = new JREmptyDataSource();
JasperPrint jasperPrint = JasperFillManager.fillReport("Relatorios/" +reportSource, params, ED);
JasperViewer.viewReport(jasperPrint);
JasperExportManager.exportReportToPdfFile(jasperPrint, caminhoArquivoPDF);
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (Exception e) {
System.out.println("Erro ao gerar o Relatorio. Verifique se existe relatorio ja aberto.");
e.printStackTrace();
}
}
Esse é o código que gera o grafico. Eu retorno um BuffereImage e envio esse buf para o relatorio
/**
* Gera um gráfico de barras Vertical
*/
public static BufferedImage gerarGraficoBarraVertical(String tituloGrafico, String
tituloEixoX, String tituloEixoY, List<InformacoesRelatorio> arrayValores)throws Exception {
BufferedImage buf = null;
try {
DefaultCategoryDataset defaultCategoryDataset = new DefaultCategoryDataset();
Iterator iterator = arrayValores.iterator();
while (iterator.hasNext()) {
InformacoesRelatorio modelo = (InformacoesRelatorio) iterator.next();
defaultCategoryDataset.addValue(modelo.getQuestoesConformes().intValue(),
"Sim", modelo.getNomeGrupo());
defaultCategoryDataset.addValue(modelo.getQuestoesNaoConforme().intValue(),
"Não", modelo.getNomeGrupo());
defaultCategoryDataset.addValue(modelo.getQuestoesNaoAplicaveis().intValue(),
"Não Se Aplica", modelo.getNomeGrupo());
}
JFreeChart chart = ChartFactory.createBarChart(tituloGrafico, tituloEixoX,
tituloEixoY, defaultCategoryDataset, PlotOrientation.VERTICAL, true, false, false);
chart.setBorderVisible(true);
chart.setBorderPaint(Color.black);
// get a reference to the plot for further customisation...
final CategoryPlot plot = chart.getCategoryPlot();
final CategoryAxis domainAxis = plot.getDomainAxis();
plot.setBackgroundPaint(Color.lightGray);
// Seta a quantidade de linhas para quebra da label
plot.getDomainAxis().setMaximumCategoryLabelLines(5);
//Seta a Fonte/tamanho das labels: Tamanho 5, SansSerif
CategoryItemRenderer renderer = plot.getRenderer();
renderer.setBaseItemLabelFont(new Font("SansSerif", Font.PLAIN, 1));
buf = chart.createBufferedImage(400, 250);
} catch (Exception e) {
throw new Exception(e);
}
return buf;
}
Eu nao setei nenhuma cor de fundo explicitamente para a imagem no IReport. A minha versao do Adobe é a Adobe Reader 9. Mas esse problema ocorre tambem no foxit reader.
Obrigado pela atenção
Eu nunca mexi especificamente com JfreeChart.
Mas eu vi q vc seta uma borda como “black” e plot.setBackgroundPaint(Color.lightGray), tente alterar estes valores para branco e veja se resolve.
O problema muito provavel não está no Ireport e sim na maneira como voce esta gerando a Imagem, se tiver está duvida, gere a imagem em um diretorio e veja se ela aparece diferente do que aparece no Ireport.
Abraço