【问题标题】:Renaming a PDF streamed by Java Servlet重命名由 Java Servlet 流式传输的 PDF
【发布时间】:2013-01-21 23:08:07
【问题描述】:

使用 XSLT、XSL-FO 和 Apache FOP 的正确组合,我能够将 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" );

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

【问题讨论】:

  • inline 更改为attachment。那应该这样做。
  • 它确实设置了文件名,但也强制我不想要的另存为弹出窗口。

标签: java servlets download


【解决方案1】:

我找到了解决方案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”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-02
    • 2011-04-21
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多