我如果要直接在浏览器(系统已经装了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

解决方案 »

  1.   

    哈哈 刚看你这个感觉挺有意思的 自己试了下 没问题 用输出流可以解决
    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();
    }
      

  2.   

    楼上的方法依赖于客户端pdfreader,如果客户端木有安装PDF Reader看的应该也是乱码。
    pdf的编码特殊,不能使用一般的解析方式,应按照固有的pdf编码进行解码。
      

  3.   

    http://localhost:8888/myProj/pdf/test.pdf如果你想用这种URL访问的话
    地址应该为webapps/myProj/pdf/test.pdf