[jboss-user] [JBoss Seam] - Open PDF in IE

jpb2 do-not-reply at jboss.com
Mon Jan 29 12:00:05 EST 2007


I´m using Seam 1.1.0 and it´s great.
There´s a Seam-Component for Japser Reports that´s working fine.

However opening PDF (inline) in InternetExplorer requiers a hack.
See http://xmlgraphics.apache.org/fop/0.93/servlets.html

Notes on Microsoft Internet Explorer
Some versions of Internet Explorer will not automatically show the PDF...However, Internet Explorer can still be used to download the PDF so that it can be viewed later....
..Use an URL ending in .pdf, like http://myserver/servlet/stuff.pdf. Yes, the servlet can be configured to handle this. If the URL has to contain parameters, try to have both the base URL as well as the last parameter end in .pdf, if necessary append a dummy parameter, like http://myserver/servlet/stuff.pdf?par1=a&par2=b&d=.pdf. The effect may depend on IEx version.

I was trying to append a dummy=.pdf  parameter to the url using pages.xml, but the dummy-parameter is not appended at the very end, because Seam´s Redirect Filter appends the ConversationId to the url.

I know, that ist not the job of Seam to support an ugly workaround for IE to open PDF inline. But I hope, that someone can help me to solve this problem.


Here´s the code to produce the PDF on the fly:

public String makePdf() {    	
  |     	...
  |     	JRBeanCollectionDataSource jrDataSource = new JRBeanCollectionDataSource(items);
  | 		Map paramMap = new HashMap();
  |         try {
  | 			JasperPrint jasperPrint = JasperFillManager.fillReport(productReport, paramMap, jrDataSource);	
  | 			HttpServletResponse response  = (HttpServletResponse) facesContext.getExternalContext().getResponse();
  | 			ServletOutputStream out = response.getOutputStream();
  | 			ByteArrayOutputStream baos = new ByteArrayOutputStream();
  | 			JasperExportManager.exportReportToPdfStream(jasperPrint, baos);
  | 			response.setContentType("application/pdf");
  | 			response.setHeader("Expires", "0"); 
  |             response.setHeader("Cache-Control", 
  |                              "must-revalidate, post-check=0, pre-check=0"); 
  |             response.setHeader("Pragma", "public"); 
  |             String filename = "Produktliste.pdf";
  |             response.setHeader("Content-Disposition", "inline; filename=\"" + filename + "\"");
  | 			// contentlength required for MSIE
  | 			response.setContentLength(baos.size());
  | 			baos.writeTo(out);
  | 			out.flush();
  | 			out.close();
  | 			FacesContext.getCurrentInstance().responseComplete();
  | 			...		
  |         return Constants.View.REDIRECT.getNav();
  | 	}

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4007894#4007894

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4007894

More information about the jboss-user mailing list