我是Spring MVC的新手,但對這些功能印象頗深。如何從新窗口中獲得PDF內容(由Spring MVC控制器方法提供)
我使用的是3.1.0-RELEASE,我必須顯示一個PDF以迴應表單:表單提交。
這裏是(小)代碼我在控制器中寫道:
@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);
}
此代碼發送PDF字節[]回到原來的窗口。
如何將PDF顯示在單獨的窗口中,以便我仍然可以使原始瀏覽器窗口顯示其他內容?最好的辦法是使用客戶端PDF查看程序(Adobe Reader,FoxIt等)顯示PDF,但是如果PDF顯示在單獨的瀏覽器窗口中,我會很好。
編輯 我決定將內容處置,以使瀏覽器彈出一個保存/打開對話框,用戶可以在打開的Adobe(與丟失主瀏覽器頁面)
httpServletResponse.setHeader("Content-Disposition","attachment;filename=cool.pdf");
謝謝大家!
target =「_ blank」將(希望)在單獨的窗口中顯示PDF。如果我讓控制器方法返回一個字符串,我可以讓原始窗口呈現一個新頁面(以及新窗口中的PDF)? – 2012-02-22 19:37:48
Darn ...我不能使用target =「__ blank」,因爲表單有多個type =「submit」按鈕,我只有這個按鈕需要在單獨的窗口中進行響應(PDF)。 我決定設置Content-Disposition來帶一個保存/打開框,用戶可以打開Adobe(丟失主瀏覽器頁面) httpServletResponse.setHeader(「Content-Disposition」,「attachment; filename = product.pdf 「); – 2012-02-22 20:07:19