java-在带有servlet的浏览器中显示PDF
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-在带有servlet的浏览器中显示PDF,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2470字,纯文字阅读大概需要4分钟。
内容图文
我想在浏览器中显示PDF文件.我在JS中有到达pdf的路径,并且正在打电话从Java获取作为servlet的PDF.这是我到目前为止的内容:
RequestManager.getJSON(Config.server + "getPDF.json?pdfPath=" + this.pathToPdfFile, (function(data){
$("#" + this.divId).append('<object id="' + this.pdfObjectId + '" data="' + data + '" type="application/pdf" width="600" height="800"></object>');
ResizeManager.addResizeHandler(this.pdfObjectId, this.divId, -10, -10);
}).bind(this));
Java:
@RequestMapping("/getPDF")
public void pdfPathToServlet(Model model, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String pdfPath = request.getParameter("pdfPath");
if (pdfPath == null || pdfPath.equals(""))
throw new ServletException("Invalid or non-existent file parameter in UrlServlet servlet.");
if (pdfPath.indexOf(".pdf") == -1)
pdfPath += ".pdf";
File pdf = new File(pdfPath);
String pdfName = pdfPath.substring(pdfPath.lastIndexOf("/") + 1, pdfPath.length());
logger.debug(pdfName);
ServletOutputStream stream = null;
BufferedInputStream buf = null;
try
{
stream = response.getOutputStream();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename='" + pdfName + "'");
FileInputStream input = new FileInputStream(pdf);
response.setContentLength((int) pdf.length());
buf = new BufferedInputStream(input);
int readBytes = 0;
while ((readBytes = buf.read()) != -1)
stream.write(readBytes);
}
catch (IOException ioe)
{
throw new ServletException(ioe.getMessage());
}
finally
{
if (stream != null)
stream.close();
if (buf != null)
buf.close();
}
}
我的问题是,这在浏览器中将二进制输出显示为文本.
我不确定自己做错了什么.我尝试将标头更改为附件而不是内联,但这表明了同样的事情.我相信我希望内联,因为我希望在浏览器中显示它而不下载它.
解决方法:
您的JavaScript部分毫无意义.您正在获取PDF文件作为ajax响应,然后尝试将其设置为< object>的data属性.元件.数据属性必须指向真实URL,而不是文件内容.相应地修复您的JS:
$("#" + this.divId).append('<object id="' + this.pdfObjectId + '" data="' + Config.server + "getPDF.json?pdfPath=" + this.pathToPdfFile + '" type="application/pdf" width="600" height="800"></object>');
网络浏览器会注意在给定的URL上发送适当的HTTP请求,并初始化/呈现< object>对象.元素使用Adobe Acrobat Reader插件-如果有的话,我宁愿附上< a href =“ pdfURL”> PDF< / a>在< object>内部因此下载链接至少会正常降级.
与具体问题无关,Java代码根本不是servlet的一部分,而是Spring MVC动作.我建议您直截了当地阅读our Servlets wiki page,以了解它们的真正含义.
内容总结
以上是互联网集市为您收集整理的java-在带有servlet的浏览器中显示PDF全部内容,希望文章能够帮你解决java-在带有servlet的浏览器中显示PDF所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。