Tôi là người mới với Spring MVC nhưng khá ấn tượng với khả năng.Cách lấy nội dung PDF (được phục vụ từ phương pháp điều khiển MVC Spring) xuất hiện trong cửa sổ mới
Tôi đang sử dụng 3.1.0-RELEASE và tôi phải hiển thị PDF theo mẫu: gửi biểu mẫu.
Đây là (nhỏ) mã tôi đã viết trong bộ điều khiển:
@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);
}
Mã này sẽ gửi các byte PDF [] trở lại cửa sổ ban đầu.
Làm cách nào để hiển thị PDF trong cửa sổ riêng biệt để tôi vẫn có thể có cửa sổ trình duyệt gốc hiển thị một số nội dung khác? Tốt nhất là để có PDF được hiển thị bằng cách sử dụng chương trình xem PDF của khách hàng (Adobe Reader, FoxIt, vv ...) nhưng tôi sẽ ổn với PDF hiển thị trong một cửa sổ trình duyệt riêng biệt.
EDIT tôi quyết định để thiết lập Content-Disposition như vậy mà trình duyệt sẽ trả về một hộp lưu/mở nơi người dùng có thể mở Adobe (với mất trang trình duyệt chính)
httpServletResponse.setHeader("Content-Disposition","attachment;filename=cool.pdf");
Cảm ơn tất cả mọi người !
Mục tiêu = "_ trống" sẽ (hy vọng) hiển thị PDF trong một cửa sổ riêng biệt. Nếu tôi làm cho phương thức điều khiển trả về một chuỗi, tôi có thể có cửa sổ gốc hiển thị một trang mới (cùng với PDF trong một cửa sổ mới) không? –
Darn ... Tôi không thể sử dụng target = "__ blank" vì biểu mẫu có nhiều nút = "submit" và tôi chỉ nút này cần phản hồi (PDF) trong cửa sổ riêng. Tôi quyết định đặt Nội dung-Bố trí để mang hộp lưu/mở nơi người dùng có thể mở Adobe (mất trang trình duyệt chính) httpServletResponse.setHeader ("Content-Disposition", "attachment; filename = product.pdf "); –