oi pessoal
estou tentando colocar uma imagem no pdf gerado pelo dataExporter do primefaces.
Tentei seguir o showcase que obtem assim a imagem:
public void preProcessPDF(Object document) throws IOException,BadElementException, DocumentException
{
Document pdf = (Document) document;
ServletContext servletContext = (ServletContext)
FacesContext.getCurrentInstance().getExternalContext().getContext();
String logo = servletContext.getRealPath("/resources") + File.separator + "images" +
File.separator + "topo_geral.png";
pdf.add(Image.getInstance(logo));
}
mas ao rodar pelo eclipse, ele gera o caminho relativo a partir da workspace definida.
logo: C:\Users\Sony\workspace2\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\erp\resources\images\topo_geral.png
Eu gostaria de definir uma pasta e passar o caminho fixo, mas nao deu mto certo.
String logo = "F:\\Projetos\\ERP\\WebContent\\resources\\images\\topo_geral.png"
Seja usando o caminho relativo ou fixo, o erro acontece.
javax.el.ELException: /lista_geral.xhtml @62,128 preProcessor="#{controleMB.preProcessPDF}": com.lowagie.text.DocumentException: The document is not open yet; you can only add Meta information.
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:104)
at org.primefaces.component.export.PDFExporter.export(PDFExporter.java:50)
at org.primefaces.component.export.DataExporter.processAction(DataExporter.java:94)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:772)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)