2013-01-21 19 views
3

使用XSLT,XSL-FO和Apache FOP的正确组合,我可以将PDF发送到某个浏览器窗口。
事实上,我送文件内容如下:
重命名由Java Servlet流式传输的PDF

   response.setContentType("application/pdf"); 
      response.setContentLength(out.size()); 
      response.getOutputStream().write(out.toByteArray()); 
      response.getOutputStream().flush(); 

正如预期的那样,浏览器显示在一个名为“PDF”选项卡中的PDF内容,如果我在本地保存文件,名称也默认为pdf.pdf
如何强制文件名?

我试过除其他事项外,没有工作如下:

   response.setHeader("Content-Disposition","inline; filename=" + filename + ".pdf"); 

为清楚起见我想显示在浏览器中的内容(而不是直下载)

+0

变化'inline'到'attachment' 。 *应该*做到。 – Perception

+0

它确实设置了文件名,但也强制保存为我不想要的弹出窗口。 – MonoThreaded

回答

7

我发现解决方案here

基本上,这是一个改变web.xml中的URL模式的问题
浏览器将使用任何页面名称看起来像
我曾经有

<servlet-mapping> 
     <servlet-name>PDF</servlet-name> 
     <url-pattern>/pdf</url-pattern> 
    </servlet-mapping> 

我与

<servlet-mapping> 
     <servlet-name>PDF</servlet-name> 
     <url-pattern>/pdf/*</url-pattern> 
    </servlet-mapping> 

调用使用http://wherever/pdf/filename.pdf?param1=va1...该servlet替换更改文件名以 “filename.pdf”