将PDF文件显示到JSF PAGE中

时间:2014-05-12 13:53:45

标签: jsf pdf

我想显示一个pdf文件,而不保存服务器上的文件我已经保存了genrete pdf的数组字节,当我试图在页面中显示它是这样的

  

xœÕZIk,7¾ûWÌ9G[·$f=ä0ärË9ò.ùû©E%•Zín¿áñfì^¤Z¿úªdófO½üy2'?Myzs§ì[:}ùåå‡oNð=ø÷å·—ëûË4í<üþóéÛ§=Ywzÿõdz±Ë|6Îx–Ww6ÓóbÏ&š´¼¦³Éæb®xá¶Èý;~8—×x6ò<ÈK8“ 9 \ 2>']¡OH   Fμ|%,?½÷OXU〜SÚÙ¼ù•'ÖY\5Án'B¶Á¢DvÆ}l¤ÏdÜÈx™I]-WzôJwoËT.Ùû'^ AEA&GT;èû²/S~ß|μLOgœμÎ9؃÷zT值#F°/ ž€”ObÝÝ-¼{¦¯L–Ñ{kÎÙŽ!=ƒY)xMV¤þÆ{xo(îb)   r×Û-M¸ÂVßS^RðÕÕ+%H9LEãƒqqï'÷®lÚ»v]qoIr¯-à[I¿;‰〜öìý¾Åb²Áua!ïÕ¾JN¶   燕麦| P:äl¤³l6ë½}”,~HÉO(!ç¬rìÞTöb&LT;Ú^ B \ƒ|~Z^u¼åÿ3ÏWOeñßMRX²tß³q)•

这是我的代码

 FacesContext context = FacesContext.getCurrentInstance();  
  HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();          
  response.reset();
  ServletOutputStream os = response.getOutputStream();
  response.setContentType("application/pdf"); // fill in  
  response.setContentLength(this.currentDocument.getContenu().length);  
  String pdfName="Test";
  response.setHeader("Content-Disposition", "attachment; filename=\"" + pdfName + "\""); 

  os.write(this.currentDocument.getContenu()); // fill in bytes  

  os.flush();  
  os.close();  
  context.responseComplete();  

1 个答案:

答案 0 :(得分:0)

这种情况最有可能发生,因为您正在使用ajax操作来触发PDF生成。在响应

中正确呈现PDF需要完整的HTTP请求

确保您没有使用像<p:commandButton/>这样的ajax按钮来触发操作。

使用

<p:commandButton ajax="false"/>

OR

<h:commandButton/>