【发布时间】:2014-11-28 22:38:59
【问题描述】:
我有一个 PDF 链接,当我单击它时,我希望它打开一个新选项卡并在新选项卡中呈现,而不是要求我下载它。我该怎么做?
注意,我问这个问题是为了回答。这些信息可以从其他答案中拼凑起来,但我希望它们都集中在一个地方
【问题讨论】:
标签: java pdf browser tabs header
我有一个 PDF 链接,当我单击它时,我希望它打开一个新选项卡并在新选项卡中呈现,而不是要求我下载它。我该怎么做?
注意,我问这个问题是为了回答。这些信息可以从其他答案中拼凑起来,但我希望它们都集中在一个地方
【问题讨论】:
标签: java pdf browser tabs header
要在新选项卡中打开链接(PDF 或非 PDF),您必须修改该链接的 HTML 来自
<a href="/link_to_pdf.pdf">PDF</a>
到
<a href="/link_to_pdf.pdf" target="_blank">PDF</a>
要在浏览器中打开 PDF,您必须对响应标头进行服务器端更改。在 Java 中,您可以这样做:
response.setContentType("application/pdf");
response.addHeader("content-disposition", "inline; filename=link_to_pdf.pdf");
最重要的是inline。如果您输入attachment,您的浏览器将尝试下载它。 You can read more here.
【讨论】:
inline 是我们所需要的。对于使用 C# MVC 的用户,请添加以下内容:HttpContext.Response.AddHeader("content-disposition", "inline; filename=link_to_pdf.pdf");
秘诀是在方法响应中使用 InputStreamResource 作为 ResponseEntity:
@GetMapping(path = "/pdf/{key}", produces = MediaType.APPLICATION_PDF_VALUE)
@ResponseBody
public InputStreamResource pdf(@PathVariable("key") String key){
InputStream file = pdfservice.get(key);
return new InputStreamResource(file);
}
【讨论】: