Bom dia pessoal,
Estou com o seguinte problema : tenho que fazer um relatorio simples que exiba o nome, o login e o tipo do usuario e para isto utilizei o Ireport 3.7.3 e consegui fazer o mesmo em pdf mas eu tenho que fazer o mesmo relatorio em html eu tambem consegui exibir estas informaçoes em html mas infelizmente aparece uma serie de links de imagens no relatorio. Alguem poderia me dizer como posso remover estes links. Se puderem me mostrarem um exemplo ficaria grato.
Links de imagens aparecem no meu relatorio em html, como faço para removê-las
12 Respostas
ele usa sempre o mesmo html, ou gera um novo a cada novo relatório?
Tem como postar o pdf ?
E mostrar qual seria o resultado que vc deseja?
Não entendi as suas condições
Usa sempre o mesmo. Abaixo segue o link da imagem do problema que esta ocorrendo em meu relatorio em html.
[URL=http://imageshack.us/photo/my-images/217/imagemih.png/]
[/URL]
imagem nao aparece
Aqueles imagem do lado dos nome, sao imagens mesmo? ou não existem? ou nao carregou a foto?
não sei se entendi direito… mas se o problema são imagens em um html que nunca muda… por que não só abrir e deletar as tags das imagens?
Voce esta conseguindo ver a imagem agora, pois eu estou conseguindo?
Estas imagens nao existem no relatorio.
Nao sei colega, é algo que o html não conseguiu interpretar… Analise seu jasperReports
mostre o html pra gente… quem sabe a gente não encontra uma solução
Segundo umas pesquisas foi dito que:
“Simplemente enviar o arquivo html em memória para o cliente não adiantaria, pois ao gerar esse tipo de relatório o Ireport cria arquivos de imagens para montar o relatório corretamente.
Pode verificar este comportamento rodando o relatório no formato HTML de dentro do iReports. No mesmo diretório onde o arquivo é gerado, é criada outra pasta contendo os arquivos de suporte.”
Pessoal eu estava com problemas em criar um relatorio em html pois o mesmo exibia uma serie de links de imagens onde os espaços eram em branco no relatorio. O que eu fiz foi o seguinte:
1 - no link imprimir fiz:
<rich:menuItem submitMode=“server” value=“Imprimir em Html"
action=”#{usuarioActions.imprimirEmPdfOuHthml}" icon="/recursos/imagens/open.gif" >
<f:setPropertyActionListener value=“html” target="#{usuarioActions.opcaoRelatorioEscolhido}" />
</rich:menuItem>
2 - na classe UsuarioActions.java :
public class UsuarioActions extends BaseActions{
private String opcaoRelatorioEscolhido;
// Services
private UsuarioAppService usuarioService;
public UsuarioActions(){
try {
usuarioService = FabricaDeAppService.getAppService(UsuarioAppService.class);
tipoUsuarioService = FabricaDeAppService.getAppService(TipoUsuarioAppService.class);
} catch (Exception e) {
}
}
//.......................
//.....................
public void imprimirEmPdfOuHthml(){
String url = "/GeraRelatorioDeUsuarios";
FacesContext context = FacesContext.getCurrentInstance();
List<Usuario> listaDeUsuarios = null;
try {
listaDeUsuarios = usuarioService.recuperaListaDeUsuarios();
if(listaDeUsuarios.isEmpty()){
throw new AplicacaoException();
}
ServletContext sc = (ServletContext) context.getExternalContext().getContext();
RequestDispatcher rd = sc.getRequestDispatcher(url);
HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
HttpServletResponse response=(HttpServletResponse)context.getExternalContext().getResponse();
request.setAttribute("opcaoRelatorioEscolhido",opcaoRelatorioEscolhido);
rd.forward(request, response);
}catch (Exception e) {
e.printStackTrace();
}
finally{
context.responseComplete();
}
}
}//fim da classe UsuarioActions
3 - Servlet que redireciona para a classe que ira gerar o relatorio propriamente dito.
public class GeraRelatorioDeUsuarios extends HttpServlet
{
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
UsuarioAppService usuarioService = null;
List<Usuario> listaDeUsuarios = null;
String proxima;
try
{
usuarioService = (UsuarioAppService) FabricaDeAppService
.getAppService(UsuarioAppService.class);
listaDeUsuarios = usuarioService.recuperaListaDeUsuarios();
}
catch (Exception e)
{ e.printStackTrace();
System.exit(1);
}
//if (listaDeUsuarios != null)
if (!listaDeUsuarios.isEmpty())
{
String opcaoDeRelatorio = (String)req.getAttribute("opcaoRelatorioEscolhido");
req.setAttribute("lista", listaDeUsuarios);
Map<String, String> parametros = new HashMap<String, String>();
req.setAttribute("parametros", parametros);
req.setAttribute("nomeDoRelatorio","/reports/relatorioListagemUsuarios.jasper");
if("pdf".equals(opcaoDeRelatorio))
{ proxima = "/GeraRelatorioEmPDF";
}
else
{ proxima = "/GeraRelatorioEmHTML";
}
}
else
{
proxima = "/WebContent/usuario/list.faces";// Nao ira funcionar. O tratamento para a lista vazia esta
// sendo realizada dentro do metodo imprimirEmPdfOuHtml.
// Deve ser pesquisado como se envia uma requisiçao para uma
// pagina em jsf a partir de um Servlet.
}
RequestDispatcher dispatcher = req.getRequestDispatcher(proxima);
dispatcher.forward(req, res);
}
} //fim do servelt GeraRelatorioDeUsuarios
4 - servlet que gera o relatorio propriamente dito.
public class GeraRelatorioEmHTML extends HttpServlet
{
private final static long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String nomeDoRelatorio = (String)request.getAttribute("nomeDoRelatorio");
System.out.println(">>>>>>>>>>>>>>>Nome do relatorio="+nomeDoRelatorio);
List lista = (List)request.getAttribute("lista");
HashMap<String, String> parametros = (HashMap<String, String>)request.getAttribute("parametros");
ServletContext context = this.getServletContext();
String nomeDoArquivoCompilado = context.getRealPath(nomeDoRelatorio);
System.out.println(">>>>>>>>>>>>>>>>>>>> nomeDoArquivoCompilado="+nomeDoArquivoCompilado);
File arquivo = new File(nomeDoArquivoCompilado);
PrintWriter printWriter = response.getWriter();
try
{ JasperReport relatorioCompilado = (JasperReport) JRLoader.loadObject(arquivo);
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(lista);
JasperPrint impressao = JasperFillManager.fillReport(relatorioCompilado, parametros, ds);
JRHtmlExporter htmlExporter = new JRHtmlExporter();
response.setContentType("text/html");
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, impressao);
htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT, impressao);
htmlExporter.setParameter(JRExporterParameter.OUTPUT_WRITER, printWriter);
htmlExporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/gesplan/image?image=");
htmlExporter.exportReport();
}
catch(JRException e)
{ e.printStackTrace(printWriter);
}
}
} //fim do servlet GeraRelatorioEmHTML
5 - Configuraçao necessaria no web.xml
GeraRelatorioDeUsuarios reports.GeraRelatorioDeUsuarios GeraRelatorioEmHTML reports.GeraRelatorioEmHTML GeraRelatorioEmPDF reports.GeraRelatorioEmPDF ImageServlet net.sf.jasperreports.j2ee.servlets.ImageServlet ImageServlet /image GeraRelatorioDeUsuarios /GeraRelatorioDeUsuarios GeraRelatorioEmHTML /GeraRelatorioEmHTML GeraRelatorioEmPDF /GeraRelatorioEmPDFObs.: Todo o codigo acima é necessaria para a criaçao de um relatorio em HMTL se vc desejar criar o mesmo em PDF sera preciso criar um servlet GeraRelatorioEmPDF similar ao de servlet de HTML.
Um abraço!