我第一次使用 iText+flying saucer 与使用 JSF 2.0 的 xhtml 页面进行简单的注册表单,其中包含常规输入字段,如名字、姓氏、电话号码等。一旦用户输入所有数据并单击“下一步”按钮,我必须将此带有用户数据的 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 或者我是否尝试使用错误的代码。请帮助我。例子赞赏。