3

使用 XSLT、XSL-FO 和 Apache FOP 的正确组合,我能够将 PDF 发送到某个浏览器窗口。
其实我是这样发送文件内容的:

           response.setContentType("应用程序/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" ); 

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

4

1 回答 1

8

我在这里找到了解决方案

基本上,这是改变 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>

调用 servlethttp://wherever/pdf/filename.pdf?param1=va1...将文件名更改为“filename.pdf”

于 2013-01-21T23:31:36.877 回答