使用servlet和jsp在浏览器中无法打开PDF文件

时间:2015-09-15 13:34:43

标签: java jsp pdf servlets

我正在尝试使用servlet和jsp在浏览器窗口中打开pdf文件。点击jsp按钮,我调用一个servlet,然后通过该servlet尝试在浏览器上显示pdf文件。

以下是我正在尝试的代码:

jsp文件:

<form action="DisplayPDF" method="post" class="register">




        <p><button type="submit" class="button">Click To Add &raquo;</button></p>


   </form>

doPost方法中的servlet部分:

response.setContentType("application/pdf");

    PrintWriter out = response.getWriter(); 
    response.setHeader("Content-Disposition", "inline; filename=bill.pdf");
    FileOutputStream fileOut = new FileOutputStream("D:\\Invoice\\Invoice_1094.pdf");  
    fileOut.close();
    out.close();

请让我知道我在哪里做错了。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您正在做的是在文件"D:\\Invoice\\Invoice_1094.pdf"上打开一个OutputStream并获取对servlet reaponse编写器的引用,但实际上从不向它们写任何内容。

我假设您要提供驻留在服务器上的文件"D:\\Invoice\\Invoice_1094.pdf"。为此,您必须阅读其内容并将其写入servlet的输出流。请注意我使用的是servlet的OutputStream,而不是它的Writer。

response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=bill.pdf");
OutputStream out = response.getOutputStream(); 
try (FileInputStream in = new FileInputStream("D:\\Invoice\\Invoice_1094.pdf")) {
    int content;
    while ((content = in.read()) != -1) {
        out.write(content);
    }
} catch (IOException e) {
    e.printStackTrace();
}
out.close();