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/