Spring 3.0 Java REST return PDF document
java, model-view-controller, rest, spring
Solution
You can define your method to take in explicit `HttpServletRequest` and `HttpServletResponse` and stream to the HttpServletResponse directly, this way:
@RequestMapping(value="/pdfmethod", produces="application/pdf")
public void pdfMethod(HttpServletRequest request, HttpServletResponse response){
response.setContentType("application/pdf");
InputStream inputStream = null;
OutputStream outputStream = null;
try{
inputStream = getInputStreamFromYourPdfFile();
outputStream = response.getOutputStream();
IOUtils.copy(inputStream, outputStream);
}catch(IOException ioException){
//Do something or propagate up..
}finally{
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
}
}
Problem
I have a PDF document generated in the backend. I want to return this using Spring MVC REST framework. What should the MarshallingView and ContentNegotiatingViewResolver look like? Based on a sample I found, the controller would have this as the return: ``` return new ModelAndView(XML_VIEW_NAME, "object", byteArrayResponseContainingThePDFDocument); ``` -thank you.