use of org.htmlcleaner.TagNode in project selenium_java by sergueik.
the class PdfServlet method performPdfDocument.
/**
* Метод, подготавливащий PDF документ.
* @param path путь до страницы
* @return PDF документ
*/
private byte[] performPdfDocument(String path) throws IOException, DocumentException {
// Получаем HTML код страницы
String html = getHtml(path);
// Буффер, в котором будет лежать отформатированный HTML код
ByteArrayOutputStream out = new ByteArrayOutputStream();
// Форматирование HTML кода
/* эта процедура не обязательна, но я настоятельно рекомендую использовать этот блок */
HtmlCleaner cleaner = new HtmlCleaner();
CleanerProperties props = cleaner.getProperties();
props.setCharset(CHARSET);
TagNode node = cleaner.clean(html);
new PrettyXmlSerializer(props).writeToStream(node, out);
// Создаем PDF из подготовленного HTML кода
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(new String(out.toByteArray(), CHARSET));
renderer.layout();
/* заметьте, на этом этапе Вы можете записать PDF документ, скажем, в файл
* но раз мы пишем сервлет, который будет возвращать PDF документ,
* нам нужен массив байт, который мы отдадим пользователю */
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
renderer.createPDF(outputStream);
// Завершаем работу
renderer.finishPDF();
out.flush();
out.close();
byte[] result = outputStream.toByteArray();
outputStream.close();
return result;
}
Aggregations