【问题标题】:How to display xhtml page contents in pdf using JSF2 & iText only, pdf displays no data如何仅使用 JSF2 和 iText 在 pdf 中显示 xhtml 页面内容,pdf 不显示数据
【发布时间】:2014-01-14 14:55:46
【问题描述】:

我的要求: 单击 JSF2 中的“打印”按钮并打开一个 pdf 文件以使用 xhtml 页面中的数据进行打印。

以下代码打开一个没有数据的空白 pdf 文件。我希望 pdf 显示来自 xhtml 页面(URL)的数据

JSF 代码: JSF 有一些字段来显示数据

<h:commandButton id="printButton" value="Print" actionListener="#{myBean.print}" />

MyBean.Java 代码:

 public void print()
 {
 ExternalContext externalContext =FacesContext.getCurrentInstance().getExternalContext();
 HttpServletResponse response = (HttpServletResponse)externalContext.getResponse();     

 String url = request.getRequestURL();

 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 Document document = new Document(PageSize.LETTER);
 PdfWriter.getInstance(document, baos);
 document.open();
 document.add(new Paragraph(" Hello"));

 response.setHeader("Expires", "0");
 response.setHeader("Cache-Control",  "must-revalidate, post-check=0, pre-check=0");
 response.setHeader("Pragma", "public");

 response.setContentType("application/pdf");
 response.setHeader("Content-Disposition", "inline;filename=\"" + PDF_FILE_NAME + "\"");
 response.setContentLength(baos.size());
 ServletOutputStream out = response.getOutputStream();

 baos.writeTo(out);
 out.flush();
 out.close();

 document.close();
 System.out.println("Done."); 
 FacesContext.getCurrentInstance().responseComplete();
}

任何帮助将不胜感激。 提前致谢,

【问题讨论】:

    标签: pdf jsf-2


    【解决方案1】:

    baos 只会在您调用 document.close() 时填写。所以,基本上,你在回复中写了一个空的baos

    baos 替换为 response.getOutputStream(),以便 iText 直接写入响应,而不是通过不必要的规避。

    PdfWriter.getInstance(document, response.getOutputStream());
    

    不要忘记删除以下多余的行:

    ServletOutputStream out = response.getOutputStream();
    baos.writeTo(out);
    out.flush();
    out.close();
    

    请注意,我只是根据目前提供的代码来回答所描述的问题症状。这一切都与你所说的“如何显示 xhtml 页面内容”和“显示来自 xhtml 页面(URL)的数据”完全无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-14
      • 2013-02-03
      • 2012-10-16
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 2019-11-13
      相关资源
      最近更新 更多