本来想用网页直接打开的,想避免弹出框框来提示是保存还是打开,但是我还是选择了后者,直接用ActiveX太慢了,不知道为什么,用静态页面都很快,其实pdf生成文件也很快,不知道为什么放在一起就和蜗牛似的。如果有人知道告诉我是哪里的问题,不禁感谢~~

     本来应该更早些更新的,这个问题解决了好久,还是写上来吧,其实很简单。因为pdf还没有完全生成好,我的servlet已经打开这个页面,而这个页面直接去打开pdf ,所以会很慢,而且网页不自己刷新,后来想到如果页面的javascript报错,我就刷新页面,结果ok了。速度还是比较好的。

    网页版的:
 
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" name="PDF1" width="100%" height="633" border="0"> 
<param  name="_Version"  value="65539">        
<param  name="_ExtentX"  value="20108">    
<param  name="_ExtentY"  value="10866">    
<param  name="_StockProps"  value="0"> 
<param name="SRC" value="真正的路径">    
</object> 
<script language="JavaScript">    
if(typeOf(PDF1)=="undefined"){ location.reload(); }
    PDF1.SetShowToolbar(
true);  
</script> 

 

  sevlet版的:这个就比较简单了。

public void doPost(HttpServletRequest request, HttpServletResponse response)
    
throws ServletException, IOException {
       
        String name 
= request.getParameter("name"== null ? "" : request.getParameter("name");
        String path 
= request.getParameter("path"== null ? "" : request.getParameter("path");
        String inPdfName 
= path + "pdf\\" + name + ".pdf";
        String realPath 
= this.getRealPath(path);
        String xmlSourceFile 
= realPath + "xml\\" +name+ ".xml";        
        realPath 
+= "pdf\\";
        
        File dirs 
= new File(realPath);    
        
        String outputFile 
= realPath + name + ".pdf";
        ServletOutputStream   out   
=response.getOutputStream();  
        response.setContentType(
"application/pdf");  
        response.setHeader(
"Content-disposition","attachment;   filename="+name+ ".pdf"); 
        BufferedOutputStream   bos   
=   null;   
        
        
try{
        
         FileInputStream fis 
= new FileInputStream(new File(outputFile)); 
          bos   
=   new   BufferedOutputStream(out);   
          
byte[]   buff   =   new   byte[8192];    
          
for (int i=fis.read(buff); i>0; i=fis.read(buff)) 
          

            bos.write(buff, 
0, i); 
          }
 
          
if(bos!=null) bos.close();
        
        
        }
catch(Exception e){
          

        }

        
finally {   
              
if   (bos   !=   null)   
              bos.close();   
              }
       
        
    }