【发布时间】:2014-03-19 05:04:58
【问题描述】:
我发现了一个有用的 PDF 生成代码,用于在 Spring MVC 应用程序中向客户端显示文件 ("Return generated PDF using Spring MVC"):
@RequestMapping(value = "/form/pdf", produces = "application/pdf")
public ResponseEntity<byte[]> showPdf(DomainModel domain, ModelMap model) {
createPdf(domain, model);
Path path = Paths.get(PATH_FILE);
byte[] pdfContents = null;
try {
pdfContents = Files.readAllBytes(path);
} catch (IOException e) {
e.printStackTrace();
}
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/pdf"));
String filename = NAME_PDF;
headers.setContentDispositionFormData(filename, filename);
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(
pdfContents, headers, HttpStatus.OK);
return response;
}
我添加了该方法返回 PDF 文件 ("Spring 3.0 Java REST return PDF document") 的声明:produces = "application/pdf"。
我的问题是,当上面的代码执行时,它立即要求客户端保存 PDF 文件。我希望先在浏览器中查看 PDF 文件,以便客户端决定是否保存。
我发现 "How to get PDF content (served from a Spring MVC controller method) to appear in a new window" 建议在 Spring 表单标签中添加 target="_blank"。我对其进行了测试,正如预期的那样,它显示了一个新选项卡,但再次出现了保存提示。
另一个是"I can't open a .pdf in my browser by Java" 的添加httpServletResponse.setHeader("Content-Disposition", "inline"); 的方法,但我不使用HttpServletRequest 来提供我的PDF 文件。
根据我的代码/情况,如何在新选项卡中打开 PDF 文件?
【问题讨论】:
标签: java spring spring-mvc pdf