如何在新标签页中打开PDF并在浏览器中显示(不要求下载)?

7
我有一个指向PDF文件的链接,当我点击它时,我希望它在新标签页中呈现,而不是要求我下载它。我该怎么做?
注意,我提出这个问题是为了回答它。这些信息可以从其他答案中拼凑出来,但我希望它都在一个地方。
2个回答

14

要在新标签页中打开链接(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,则浏览器将尝试下载它。 您可以在这里阅读更多信息。


完美!所需之物是 inline。对于使用 C# MVC 的人,请添加以下内容:HttpContext.Response.AddHeader("content-disposition", "inline; filename=link_to_pdf.pdf"); - SimpleGuy

0
秘诀在于使用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);
}

代码简洁、简单易懂。如果程序员需要使用 REST 下载 PDF,我所发布的这段代码就是易如反掌。 - codigoalvo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接