Java Pdf 生成和下载

标签 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 文件。当我单击网络应用程序上的按钮时,没有任何反应。没有错误消息。当我调试时,看起来方法已成功完成。但只是等啊等,没有pdf,没有下载。有什么建议吗?

最佳答案

我的猜测是某些输出流或编写器需要调用 close()

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

关于Java Pdf 生成和下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44841648/

相关文章:

Java数组解析

javascript - IE10始终显示缓存的PDF文档

java - 无法导入 com.itextpdf.text.pdf.PdfReader

java - 音频管理器分割为比 Android 提供的更多级别

java - 递归二叉搜索树插入

java - 在测试环境中使用 MariaDB,在生产环境中使用 sql server,如何同时使用一个选择? - Java, Spring

java - 将字符串数组添加到二维数组中

c - 读取字符串的单个字符以及字符串数组指向的字符串本身

java - 如何生成具有非重复数字的二维数组表?

pdf - 从数据库填充 PDF 字段