У меня есть ap: редактор с простыми словами, где пользователи вставляют текстовые документы, имеющие несколько шаблонов электронной почты, и сохраняют их в БД.
Теперь мне нужно преобразовать этот контент в pdf.Но то, что я возвращаю из БД, - это преобразование этого документа в HTML.
При синтаксическом анализе этого HTML-содержимого с помощью iText я сталкиваюсь с множеством ошибок из-за неправильного xhtml, как показано ниже
<span style="font-family: Arial, Verdana; font-size: 13.3333px;"><img src="9#credit_cards_logos#9"></span>
При использовании приведенного выше фрагмента я получаю ошибку недопустимый тег span,Ожидаемое закрытие тега img. Когда я удаляю тег span вокруг img, он работает нормально.
Теперь подобные ошибки встречаются повсюду.И невозможно вручную все исправить и исправить, поскольку это огромный шаблон (есть сотни шаблонов).
![error](https://i.stack.imgur.com/4j7mY.jpg)
![returned html](https://i.stack.imgur.com/DHfdS.jpg)
![what the user uploads](https://i.stack.imgur.com/KZPKh.jpg)
Вот моя функция, которую я использую для ее анализа.
public StreamedContent getFile() throws IOException, DocumentException{
final PortletResponse portletResponse = (PortletResponse) FacesContext.getCurrentInstance().getExternalContext()
.getResponse();
final HttpServletResponse res = PortalUtil.getHttpServletResponse(portletResponse);
res.setContentType("application/pdf");
res.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
res.setHeader("Content-Disposition", "attachment; filename=" + subject + ".pdf");
res.setHeader("Refresh", "1");
res.flushBuffer();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream out = res.getOutputStream();
Document document = new Document(PageSize.LETTER);
PdfWriter pdfWriter =PdfWriter.getInstance(document, baos);
document.open();
document.addCreationDate();
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
//htmlWorker.parse(new StringReader(getMessage()));
worker.parseXHtml(pdfWriter, document, new StringReader(getMessage()));
document.close();
baos.writeTo(out);
out.flush();
out.close();
return null;
}
Есть лиОбойти это?
РЕДАКТИРОВАТЬ ____________
Есть ли что-то вроде p: dataExporter ( только для таблиц данных ) в простых лицах, которые преобразуют содержимое в pdf без необходимости разбора HTML.