使用Spring MVC返回PDF文件

Fer*_*eda 6 java pdf spring spring-mvc

实际上,我有这个功能,我有一个框架,我设置URL(ip:port/birt/preview?__report=report.rptdesign&__format=pdf&parameters...),该框架呈现PDF文件.

但我想隐藏这个URL ...

我需要返回一个带有Spring MVC的PDF文件,但该PDF是由另一个应用程序生成的.

这意味着我得到了另一个应用程序(Eclipse Birt Engine),我通过URL(ip:port/birt/preview?__report=report.rptdesign&__format=pdf&parameters...)传递参数,它生成一个PDF文件,我需要从我的控制器获取该PDF并将其与Spring MVC一起返回.有人可以帮忙吗?

Ala*_*Hay 11

那将是如下:

@Controller
@RequestMapping("/generateReport.do")
public class ReportController

    @RequestMapping(method = RequestMethod.POST)
    public void generateReport(HttpServletResponse response) throws Exception {

        byte[] data = //read PDF as byte stream

        streamReport(response, data, "my_report.pdf"));
    }

    protected void streamReport(HttpServletResponse response, byte[] data, String name)
            throws IOException {

        response.setContentType("application/pdf");
        response.setHeader("Content-disposition", "attachment; filename=" + name);
        response.setContentLength(data.length);

        response.getOutputStream().write(data);
        response.getOutputStream().flush();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的回答。为什么这里需要“flush()”?请求输出流不是由 Spring 控制的,因此不应手动刷新/关闭吗? (2认同)