当前位置: 首页 > 知识库问答 >
问题:

在新建浏览器选项卡中打开ResponseEntity PDF

萧业
2023-03-14

我遇到了一个有用的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 return PDF Document”):produces=“application/PDF”

我的问题是,当上面的代码执行时,它立即要求客户机保存PDF文件。我希望PDF文件首先在浏览器中查看,这样客户端就可以决定是否保存它。

根据我的代码/情况,我如何在新的选项卡中打开PDF文件?

共有1个答案

狄玮
2023-03-14

试试看

httpServletResponse.setHeader("Content-Disposition", "inline");

但是使用responseEntity如下所示。

HttpHeaders headers = new HttpHeaders();
headers.add("content-disposition", "attachment; filename=" + fileName)
ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(
            pdfContents, headers, HttpStatus.OK);

应该管用

headers.setContentDispositionFormData("attachment", fileName);
headers.setContentDispositionFormData("inline", fileName);
headers.add("content-disposition", "inline;filename=" + fileName)
 类似资料:
  • 我试图编写一个函数,它将接收一个“浏览器实例”(我指的是),并打开一个带有特定URL的新选项卡。 这是函数: 返回True(如果URL有效) 如果有人能告诉我我做错了什么,我将非常感激。如果您有其他方法来完成打开新选项卡的任务,这是可以的。顺便说一下,我曾尝试使用:,但没有成功(我没有得到新的选项卡,也没有异常)

  • 我有一个执行上传的应用程序。我似乎无法让文件系统弹出关闭。它不会搞砸测试,它会继续在后台运行,但我想观看测试的奇怪机会有四分之一的屏幕被覆盖了。所以我想解决这个问题的方法就是强制在新选项卡中完成测试的其余部分。我不知道如何做到这一点。 这是我的上传代码: 与此问题相关:发送filepath后上传模态不会关闭

  • 有人能帮我解决下面代码的问题吗?我的意图是能够在浏览器中打开一个新的标签。脚本通过,但没有真正打开新选项卡

  • 我使用的是pdfbox图书馆2.0版本。我需要在新的浏览器选项卡,即打印视图中打开PDF。 就像我们正在从iText迁移到PDFBox,下面是iText的现有代码。 在下面的代码中,有PDPATION类来实现同样的功能。是的, 并且要在doc上应用print Javascript, 引用链接 请用这个指引我。

  • 如何在Chrome浏览器上切换到父选项卡到新选项卡并打开新URL? 我想在打开新选项卡后访问一个新的URL,所以我已经编写了如下代码,但我能够打开新选项卡,并且系统正在父窗口中打开第二个URL,而不是在第二个选项卡上?