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文件。有什麼建議麼?Java Pdf生成和下載
提示:學會使用調試器;或添加* trace *語句。當你無法觀察你的代碼在做什麼時 - 然後改變它是可觀察的! – GhostCat
一個答案是正確的:這是一個非常糟糕的方法。它從沒有提到**這個方法將要做的事情的名字開始;然後是各種違反乾淨代碼規則的行爲。這是事情:錯誤隱藏在糟糕的代碼中。 – GhostCat
調試你的代碼。在本地運行它,並將其寫入文件。那樣有用嗎?如果是這樣,出現與PDF生成無關的問題。使用wireshark查看實際通過網絡發送的內容。 –