我使用iText库构建PDF文档,我想通过单击webapp中的链接来获取此文档。 但是,它发生了......没有。没有错误信息,没有例外,真的没什么。 我真的不掌握IO Streaming,所以我认为我在这一点上犯了一个错误,但经过几个小时的研究,我不知道,我需要一些帮助。
我有两种方法。第一个是创建pdf文档的人。
public void exporterPDF(SomeObjectIWillUse o) {
Document documentPDF = new Document(PageSize.A4);
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(documentPDF, baos);
documentPDF.open();
documentPDF.addTitle("Test ! ");
Paragraph par = new Paragraph("Liste des participants");
documentPDF.add(par)
documentPDF.close();
telechargerPdfViaVue(FacesContext.getCurrentInstance(), baos, "filename.pdf");
} catch (Exception e) {
// TODO Auto-generated catch block
JsfUtils.addMessageByCode(FacesMessage.SEVERITY_FATAL, "drc.export.generation.pdf.erreur");
}
}
第二个用于发送文件。
public static final void telechargerPdfViaVue(FacesContext context, ByteArrayOutputStream baos, String fileName) throws IOException, DocumentException {
ExternalContext externalContext = context.getExternalContext();
externalContext.setResponseContentType("application/pdf");
externalContext.setResponseHeader("Expires", "0");
externalContext.setResponseHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
externalContext.setResponseHeader("Pragma", "public");
externalContext.setResponseHeader("Content-disposition", "attachment;filename=" + fileName);
externalContext.setResponseContentLength(baos.size());
OutputStream out = externalContext.getResponseOutputStream();
baos.writeTo(out);
externalContext.responseFlushBuffer();
context.responseComplete();
}
并通过简单的commandeLink
在我的网页上调用它<p:commandLink id="exportPdf" action="#{myBean.exporterPDF(o)}">
从字面上看,在调试模式下,一切都已完成,但没有任何事情发生...... 谢谢你的帮助!
更多信息,我使用: - JSF 2.2.7 - 春季4.0.6