Я впервые использую iText + летающую тарелку с xhtml-страницами с использованием JSF 2.0 для простой формы регистрации с обычными полями ввода, такими как firstName, lastName, номер телефона и т. Д. Как только пользователь вводит все данные и нажимает "NEXT strong> "Я должен преобразовать эту 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, или я пытаюсь ввести неправильный код. Пожалуйста, помогите мне. Примеры приветствуются.