Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get PDF content (served from a Spring MVC controller method) to appear in a new window

I am a newbie with Spring MVC but I'm quite impressed with its capabilities.

I am using 3.1.0-RELEASE and I have to show a PDF in response to form:form submission.

Here is the (small) code I wrote in the controller:

@RequestMapping(value = "new_product", method = RequestMethod.POST, params = "print")
@ResponseBody
public void saveAndShowPDF(ModelMap map, ShippingRequestInfo requestInfo, HttpServletRequest request, HttpServletResponse httpServletResponse) throws IOException {
    saveProductChanges(map, requestInfo, request, httpServletResponse);
    httpServletResponse.setContentType("application/pdf");
    byte[] pdfImage = productService.getPDFImage(requestInfo.getRequestId());
    httpServletResponse.getOutputStream().write(pdfImage);
}

This code sends the PDF byte[] back to the original window.

How do I get the PDF to be shown in a separate window so that I can still have the original browser window to show some other content? The best way would be to have the PDF shown using the client PDF view program (Adobe Reader, FoxIt etc.) but I would be fine with the PDF showing up in a separate browser window.

EDIT: I decided to set the Content-Disposition so that the browser brings up a save/open box where the user can open Adobe (with losing the main browser page).

httpServletResponse.setHeader("Content-Disposition","attachment;filename=cool.pdf");

Thanks everyone!

like image 620
Ninju Bohra Avatar asked Feb 22 '12 19:02

Ninju Bohra


1 Answers

Specify target="_blank" in the form:form tag that submits your form.

like image 187
GriffeyDog Avatar answered Oct 29 '22 04:10

GriffeyDog