Boa tarde galera td bem…
Estou com uma dúvida como pego uma imagem na jsp resultante do seguinte metódo que retorna um ByteArrayOutputStream
public ByteArrayOutputStream gerarRelatorio(ListaPaginavel listaContrato,ContratoCombinacaoBusca combinacaoBusca){
Document documento = new Document(PageSize.A4, 20, 20, 20, 20);
ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();
@SuppressWarnings("unused")
PdfWriter writer = null;
DefaultPieDataset dataSetTorta = new DefaultPieDataset();
JFreeChart graficoFudidoTorta = ChartFactory.createPieChart("Gráfico do Relatório", dataSetTorta, true, true, false);
List<JFreeChart> graficos = new ArrayList<JFreeChart>();
// graficos.add(graficoFudidoBarras);
graficos.add(graficoFudidoTorta);
PiePlot plot = (PiePlot) graficoFudidoTorta.getPlot();
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} ({2})"));
try {
String espaco = " ";
String quebra = "\n";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy",new Locale("pt","BR"));
writer = PdfWriter.getInstance(documento, pdfStream);
documento.addTitle("Crea-RJ - Sistema Corporativo - Módulo Fiscalização");
documento.addSubject("Crea-RJ - Sistema Corporativo - Módulo Fiscalização");
documento.addAuthor("Crea-RJ - Sistema Corporativo - Módulo Fiscalização");
documento.open();
Font fonte = new Font(Font.HELVETICA, 8);
Font fonteTitulo = new Font(Font.HELVETICA, 10);
Phrase linhas = new Phrase("\n----------------------------------------------------------------------------------------------------------------------------------------------\n", fonteTitulo);
Phrase cabecalho = new Phrase("Crea RJ\n Dados do relatório : " + "\n",fonteTitulo);
documento.add(linhas);
documento.add(cabecalho);
documento.add(linhas);
documento.add(new Phrase("Data: " + sdf.format(new Date()) + quebra + quebra,fonte));
long quantidadeTotalArt = 0;
long quantidadeTotalOficios = 0;
BigDecimal valorTotalArts = new BigDecimal(0);
for(Contrato contrato:listaContrato){
long qtdOficio = 0;
if(contrato.getOficio() != null){
qtdOficio = 1;
quantidadeTotalOficios += qtdOficio;
}
long qtdArt = 0;
BigDecimal valorArt = new BigDecimal(0);
if(contrato.getContratoART() != null){
qtdArt = 1;
quantidadeTotalArt += qtdArt;
valorArt = contrato.getContratoART().getValorContrato();
valorTotalArts = valorTotalArts.add(valorArt);
}
if(combinacaoBusca.getTipoRelatorio().equals("2")){
documento.add(new Phrase(quebra + "Nome do contratante: " + contrato.getInteressadoContratante().getNomeRazaoSocial(),fonte));
documento.add(new Phrase(espaco + "Quantidade de Ofício: " + qtdOficio,fonte));
documento.add(new Phrase(espaco + "Quantidade de Art: " + qtdArt,fonte));
documento.add(new Phrase(espaco + "Total dos Valores das Arts: " + valorTotalArts,fonte));
documento.add(new Phrase(espaco + "Quantidade de Multas: 1",fonte));
documento.add(new Phrase(espaco + "Total dos Valores das Multas: 1",fonte));
}
if(combinacaoBusca.getTipoRelatorio().equals("1")){
documento.add(new Phrase(quebra + "Quantidade de Ofício: " + qtdOficio,fonte));
documento.add(new Phrase(espaco + "Quantidade de Art: " + qtdArt,fonte));
documento.add(new Phrase(espaco + "Total dos Valores das Arts: "+ valorTotalArts,fonte));
documento.add(new Phrase(espaco + "Quantidade de Multas: 1",fonte));
documento.add(new Phrase(espaco + "Total dos Valores das Multas: 1",fonte));
}
}
dataSetTorta.setValue("Art" , quantidadeTotalArt);
dataSetTorta.setValue("Notificação",quantidadeTotalOficios);
int largura = 500;
int tamanho = 550;
PdfContentByte dc = writer.getDirectContent();
PdfTemplate tp = dc.createTemplate(tamanho, largura);
Graphics2D g2 = tp.createGraphics(tamanho, largura, new DefaultFontMapper());
Rectangle2D r2D = new Rectangle2D.Double(0,0, tamanho,largura);
// graficoFudidoBarras.draw(g2,r2D,null);
g2.dispose();
dc.addTemplate(tp, 20, writer.getVerticalPosition(true)- 500);
// documento.newPage();
tp = null;
tp = dc.createTemplate(tamanho, largura);
g2 = tp.createGraphics(tamanho, largura, new DefaultFontMapper());
r2D = new Rectangle2D.Double(0,0, tamanho,largura);
graficoFudidoTorta.draw(g2,r2D,null);
g2.dispose();
// documento.newPage();
dc.addTemplate(tp, 20, writer.getVerticalPosition(true)- 500);
documento.close();
return pdfStream;
} catch (DocumentException de){}
return null;
}
Desde já agradeço pela atenção…