Java Spring MVC在浏览器中显示PDF

时间:2015-02-16 22:00:44

标签: java spring-mvc pdf

如何强制浏览器显示pdf而不是下载? 这是控制器

 @RequestMapping(value = "/preview.pdf", method = RequestMethod.GET)
protected String preivewSection(      
    HttpServletRequest request,
        HttpSession httpSession,
    HttpServletResponse response) {
    try {
        byte[] documentInBytes = getDocument();         
        response.setHeader("Content-Disposition", "inline; filename=\"report.pdf\"");
        response.setDateHeader("Expires", -1);
        response.setContentType("application/pdf");
        response.setContentLength(documentInBytes.length);
        response.getOutputStream().write(documentInBytes);
    } catch (Exception ioe) {
    } finally {
    }
    return null;
}

4 个答案:

答案 0 :(得分:3)

如果删除此行,则pdf将在浏览器中打开。

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

答案 1 :(得分:1)

看起来上面提到的控制器就是我们从服务器端所需要的,问题是浏览器不支持查看PDF文件。

答案 2 :(得分:0)

使用此谷歌浏览器不支持预览。

response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());

但是我将此标头更改为:

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

预览好!

因为inline (default value, indicating it can be displayed inside the Web page, or as the Web page)

Nokogiri

答案 3 :(得分:0)

在检查邮递员的回复后,如果这样的结果在chrome上有效

内容处置:name =“ inline”; filename =“ XXX.pdf”

我认为发问者的参数要少一些“ name =”

Content-Disposition:内联; filename =“ XXX.pdf”(不适用于Chrome)

如果未设置Content-Disposition,则某些框架会自动添加默认值成为

内容处置:name =“ attachment”; filename =“ f.txt”(不适用于chrome)

某些插件会在标题变成之前自动添加“ form-data;”

内容处置:form-data; name =“ inline”; filename =“ XXX.pdf”(不适用于Chrome)