显示/下载PDF文件

    任务

    今天(准确的说是昨天)的任务之一是做一个PDF文件的下载/显示按钮。用户在前台下一个订单,并完成支付之后,我们需要把这个order的详细信息显示给用户,包括用页面把这些信息显示出来和用PDF文件记录下来。在这个详细信息页面,我们有一个按钮,当用户点击它的时候,服务器程序就会去生成PDF文件,并弹出提示框,问用户是要保存到本地还是只在本地显示。其中生成PDF的代码已经写好了。现在的任务有两个:1.弹出提示框,2.实现下载和本地显示功能。

    该怎么做

    1.在页面添加按钮,代码如下:

        <h:commandLink action="#{orderBean.generatePDF}">

               <img src="images/button_printableversion.gif" width="129" height="24" border="0" align="top" />

       </h:commandLink>

        为了让页面更漂亮,我们为这个按钮加了一张图片。

     2.写一个方法来实现功能1和2.并让generatePDF()方法来调用。代码如下:

      public void downloadFile(String strfileName) {
            try {

                    FacesContext context = FacesContext.getCurrentInstance();

                    ServletContext servletContext = (ServletContext) context
                                   .getExternalContext().getContext();

                    String excelName = servletContext.getRealPath("/uploadExcel") + "/"+ strfileName;
                    File exportFile = new File(excelName);
                    HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext
                                  .getCurrentInstance().getExternalContext().getResponse();
                    ServletOutputStream servletOutputStream = httpServletResponse
                                  .getOutputStream();
                    httpServletResponse.setHeader("Content-disposition",
                                 "attachment; filename=" + strfileName);
                    httpServletResponse.setContentLength((int) exportFile.length());
                    httpServletResponse.setContentType("application/x-download");

                    byte[] b = new byte[1024];
                    int i = 0;
                    FileInputStream fis = new java.io.FileInputStream(exportFile);
                    while ((i = fis.read(b)) > 0) {
                             servletOutputStream.write(b, 0, i);
                             }
               } catch (IOException e) {
                       e.printStackTrace();
               }
               FacesContext.getCurrentInstance().responseComplete();
        }

 

    我们的问题

 

 

    我们走的弯路

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值