在新浏览器选项卡中打开响应实体 PDF
2022-09-03 05:30:05
我遇到了一个有用的PDF生成代码,用于在Spring MVC应用程序中向客户端显示文件(“使用Spring MVC返回生成的PDF”):
@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返回PDF文档”):。produces = "application/pdf"
我的问题是,当上面的代码被执行时,它会立即要求客户端保存PDF文件。我希望首先在浏览器中查看PDF文件,以便客户端可以决定是否保存它。
我发现“如何让PDF内容(从Spring MVC控制器方法提供)出现在新窗口中”,建议添加Spring表单标签。我测试了它,正如预期的那样,它显示了一个新选项卡,但保存提示再次出现。target="_blank"
另一个是“我无法通过Java在浏览器中打开.pdf”的方法添加,但我没有用于提供我的PDF文件。httpServletResponse.setHeader("Content-Disposition", "inline");
HttpServletRequest
鉴于我的代码/情况,如何在新选项卡中打开PDF文件?