Servlets 无法从Servlet打开PDF

Servlets 无法从Servlet打开PDF,servlets,itext,Servlets,Itext,我试图在创建后立即打开pdf。 我想在浏览器中查看结果,但我没有。 顺便说一下,该程序在服务器上运行。 如果我试着在那里打开pdf,没问题——一切正常。 例如,如果客户点击一个按钮,他就看不到pdf文件 这是我的密码: @WebServlet("/GeneratePdfCustomer") public class GeneratePdfCustomer extends HttpServlet { private static final long serialVersionUID = 1L;

我试图在创建后立即打开pdf。 我想在浏览器中查看结果,但我没有。 顺便说一下,该程序在服务器上运行。 如果我试着在那里打开pdf,没问题——一切正常。 例如,如果客户点击一个按钮,他就看不到pdf文件

这是我的密码:

@WebServlet("/GeneratePdfCustomer")
public class GeneratePdfCustomer extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

    final int id = Integer.parseInt(request.getParameter("id"));
    makePdf(request, response, "POST",id);

}

 public void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
    doPost(request, response);
      }

 public void makePdf(HttpServletRequest request,
          HttpServletResponse response, String methodGetPost, int id)
          throws ServletException, IOException {

        response.setContentType("application/pdf");


        try {

        Document document = new Document();         

        PdfWriter.getInstance(document, response.getOutputStream());

        document.open();

        document.add(new Paragraph("Test"));

        document.close();

        } catch (Exception e) {
          System.out.println("Error" + e);
        }
      }
}
我正在使用iText库

编辑:

现在我已经更改了servlet代码,但仍然不适合我。 我在浏览器中看不到pdf。Firefox和IE都没有显示任何内容

package de.WorldCheckCustomer.model;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

@WebServlet("/GeneratePdfCustomer")
public class GeneratePdfCustomer extends HttpServlet {

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    makePdf(request, response);
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    makePdf(request, response);
}

public void makePdf(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {


    // Set content type to application / pdf
    // browser will open the document only if this is set
    response.setContentType("application/pdf");
    // Get the output stream for writing PDF object
    OutputStream out = response.getOutputStream();
    try {
        Document document = new Document();
        /* Basic PDF Creation inside servlet */
        PdfWriter.getInstance(document, out);
        document.open();
        document.add(new Paragraph("Tutorial to Generate PDF using    Servlet"));
        document.add(new Paragraph(
                "PDF Created Using Servlet, iText Example Works"));
        document.close();
    } catch (DocumentException exc) {
        throw new IOException(exc.getMessage());
    } finally {
        out.close();
    }
}

private static final long serialVersionUID = 6067021675155015602L;

}

您是否使用不同类型的PDF查看器在所有浏览器上进行了测试?您在浏览器中看到了什么?错误?白纸?你是否尝试过书中的概念验证:阅读这本书,你会发现你对浏览器非常乐观。看看书中的,找出不同之处。@Lowagie没有发生任何事情,没有空白页,IDE中没有错误。但是,如果我将PdfWriter实例更改为文件夹中的最后一个位置,并且客户端单击按钮生成pdf,则文件将存储到此文件夹中。因此,唯一认为dosen不起作用的方法是立即显示页面。您已经确定问题不是由iText引起的,如果是,那么使用change PdfWriter创建的PDF也将是错误的。如果您测试我书中的Servlet会发生什么:它正常工作,POST和GET方法证明您的问题是由于忽略文档造成的。按照中的说明和所示调整Servlet,问题就会消失。