浏览器直接查看pdf和pdf的读取问题

KG071 2011-09-04 11:27:24
我如果要直接在浏览器(系统已经装了adobe reader)上看pdf文件,如我的访问路径为 http://localhost:8888/myProj/pdf/test.pdf,网页上直接显示test.pdf文件的内容,那我的test.pdf是不是必须放到WEBINFO目录下啊?

或者文件不放到WEBINFO下,用流来做,把某个文件夹下的文件用流的形式读出来,然后设置"application/pdf",将其显示到浏览器上,这样可行吗?

我在读取pdf文件时出了些问题,难道读取pdf文件非要用PDFBox吗?为什么我直接用FileInputStream读会都是这种格式?
0000037528 00000 n
0000037654 00000 n
0000037773 00000 n
0000037891 00000 n
0000038009 00000 n
0000038135 00000 n
0000038986 00000 n
0000039103 00000 n
0000039220 00000 n
0000039337 00000 n
0000039456 00000 n
...全文
229 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
动感光波 2011-09-05
  • 打赏
  • 举报
回复
http://localhost:8888/myProj/pdf/test.pdf如果你想用这种URL访问的话
地址应该为webapps/myProj/pdf/test.pdf
benbenkui 2011-09-05
  • 打赏
  • 举报
回复
楼上的方法依赖于客户端pdfreader,如果客户端木有安装PDF Reader看的应该也是乱码。
pdf的编码特殊,不能使用一般的解析方式,应按照固有的pdf编码进行解码。
阳明 to life 2011-09-04
  • 打赏
  • 举报
回复
哈哈 刚看你这个感觉挺有意思的 自己试了下 没问题 用输出流可以解决
web.xml里面配置下
<mime-mapping>
<extension>pdf</extension>
<mime-type>application/pdf</mime-type>
</mime-mapping>

servlet内容,图个方便 用channel了 你换成outputStream一样实现的,Firefox和ie测试都没问题
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{

response.setContentType("application/pdf;charset=utf-8");
OutputStream out = response.getOutputStream();
FileInputStream inputStream = new FileInputStream("D:/a.pdf");
FileChannel channel = inputStream.getChannel();

WritableByteChannel channel_out = Channels.newChannel(out);
channel.transferTo(0,channel.size(),channel_out);

out.flush();
out.close();
}

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧