如何在浏览器中显示PDF文件

6
在我的servlet中,我正在使用下面的代码在浏览器中打开一个PDF文件,但是实际上它显示的是下载对话框。我做错了什么?
response.setContentType("application/pdf");
out = response.getWriter();
String filepath = "D:/MyFolder/PDF/MyFile.pdf";

response.setHeader("Content-Disposition", "inline; filename=" + filepath + ";");
FileOutputStream fileOut = new FileOutputStream("D:/MyFolder/PDF/MyFile.pdf");

fileOut.close();
out.close();

1
https://dev59.com/RHVC5IYBdhLWcg3wcgud? - gates
我有一个解决方案,但不太可行,即使用Apache POI API将每个PDF文件页面转换为图像,然后显示它。 - Piyush Yawalkar
我该如何在Servlet中实现它? - vineeth
我猜这取决于浏览器和已安装的插件。 - xehpuk
4个回答

7

您需要使用以下配置设置响应类型:

File outPutFile=new File(generatedFile);
stream = response.getOutputStream();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\"" + filename + "\"");
response.setContentLength((int) outPutFile.length());

小错误:outPut -> output(只有一个单词) - tucuxi
@SaviNuclear 我尝试过了,但它不起作用,你能提供其他方法吗??? - vineeth
@vineethPrabhakaran,您能否提供错误消息或日志详细信息以便了解您的问题。 - SaviNuclear

2

you need this:

response.setContentType("application/pdf") 
response.setHeader("Content-Disposition", "inline; filename= .. " )

否则,如果内容类型为octet-stream或者content-disposition为attachment,浏览器会提示你打开/保存。
如果你想在一个标签页中显示pdf,你需要在html(或者angular、jsp等你使用的框架)中设置target="_blank"。

1

你可以尝试用同样的方法

response.setHeader("Content-Disposition", "attachment;filename="+filepath+";");

0

是相关的

你的浏览器是Firefox吗?可能会有关


实际上我尝试使用它,但仍然无法显示PDF。 - vineeth

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