Java Pdf生成和下载

时间:2017-06-30 08:07:04

标签: java arrays pdf itext

public void print()  {

    Document document = new Document(PageSize.A4);

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    try {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ExternalContext externalContext = facesContext.getExternalContext();
        HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
        response.setContentType("application/pdf");

        response.setHeader("Content-Disposition", String.format(ATTACHMENT,  "-normal"));
        PdfWriter pdfWriter = PdfWriter.getInstance(document, byteArrayOutputStream);
        document.open();

        BaseFont baseFont = BaseFont.createFont(BaseFont.TIMES_ROMAN, ISO_8859_9, true);
        BaseFont baseBoldFont = BaseFont.createFont(BaseFont.TIMES_BOLD, ISO_8859_9, true);
        Font font11 = new Font(baseFont, 11);

        document.add(new Paragraph(seciliListeElemani.getOgrno() + " " +
                seciliListeElemani.getAd() + " " + seciliListeElemani.getSoyad() + " Mezun Olabilir!!!!", font11));


        document.close();

        response.setContentLength(byteArrayOutputStream.size());
        ServletOutputStream servletOutputStream = response.getOutputStream();
        byteArrayOutputStream.writeTo(servletOutputStream);
        byteArrayOutputStream.flush();
        FacesContext.getCurrentInstance().responseComplete();


    } catch (DocumentException e) {
        throw new OrgunException(e.getMessage());
    } catch (IOException e) {
        throw new OrgunException(e.getMessage());
    }

}

我写了这段代码来打印pdf文件。当我单击我的Web应用程序上的按钮时,没有任何反应。没有错误消息。我调试时看起来方法成功完成了。但只是等待和等待没有pdf没有下载。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我的猜测是某些输出流或编写者需要调用awk -F, '{ $3=substr($3,1,2)"/"substr($3,3,2)"/"substr($3,5) }1' OFS=',' file

我建议您将不同的问题分开,以便您可以更轻松地调试它们并缩小问题范围。例如。使servlet的生成独立于servlets / Faces。无论如何,这是一个很好的编程实践。

答案 1 :(得分:0)

我解决了我的问题。这是xhtml方面。

<p:commandButton value="print" actionListener="#{bean.print}" 
  rendered="#{bean.seciliListeElemani.durum_id==5}"></p:commandButton>

我添加了

ajax="false"

它有效。