【发布时间】:2012-10-15 04:49:51
【问题描述】:
我第一次使用 iText+flying saucer 和 xhtml 页面,使用 JSF 2.0 进行简单的注册表单,带有常规输入字段,如名字、姓氏、电话号码等。一旦用户输入所有数据并单击 " NEXT" 按钮 我必须将此带有用户数据的 XHTML 页面转换为 pdf。我怎样才能准确地获取该页面的源 HTML 以及页面中包含的所有样式并将其转换为 pdf。目前我喜欢这个。
public void createPDF() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
HttpSession session = (HttpSession) externalContext.getSession(true);
String url = "http://localhost:8080/MyPROJECT/faces/page1.xhtml;JSESSIONID=" + session.getId();
try {
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
renderer.layout();
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
response.reset();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","C://user//first.pdf");
OutputStream browserStream = response.getOutputStream();
renderer.createPDF(browserStream);
browserStream.close();
session.invalidate();
} catch (Exception ex) {
ex.printStackTrace();
}
facesContext.responseComplete();
}
但它向我抛出了这个异常。
ERROR: 'The string "--" is not permitted within comments.'
org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException: The string "--" is not permitted within comments.
这是使用上述 URL 获取我的页面的正确方法吗?该 URL 是否在单击 NEXT 按钮时获取带有用户数据的页面并将其转换为 pdf,还是我尝试使用错误的代码。请帮助我。示例赞赏。
【问题讨论】:
标签: jsf-2 itext flying-saucer xhtmlrenderer