Search in sources :

Example 16 with TagNode

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;
}
Also used : ITextRenderer(org.xhtmlrenderer.pdf.ITextRenderer) CleanerProperties(org.htmlcleaner.CleanerProperties) PrettyXmlSerializer(org.htmlcleaner.PrettyXmlSerializer) HtmlCleaner(org.htmlcleaner.HtmlCleaner) TagNode(org.htmlcleaner.TagNode)

Aggregations

TagNode (org.htmlcleaner.TagNode)16 HtmlCleaner (org.htmlcleaner.HtmlCleaner)8 CleanerProperties (org.htmlcleaner.CleanerProperties)7 Test (org.junit.Test)3 StringWriter (java.io.StringWriter)2 ArrayList (java.util.ArrayList)2 Matcher (java.util.regex.Matcher)2 Transformer (javax.xml.transform.Transformer)2 DOMSource (javax.xml.transform.dom.DOMSource)2 StreamResult (javax.xml.transform.stream.StreamResult)2 XPathExpressionException (javax.xml.xpath.XPathExpressionException)2 DomSerializer (org.htmlcleaner.DomSerializer)2 SimpleXmlSerializer (org.htmlcleaner.SimpleXmlSerializer)2 Document (org.w3c.dom.Document)2 Node (org.w3c.dom.Node)2 NodeList (org.w3c.dom.NodeList)2 SpannableStringBuilder (android.text.SpannableStringBuilder)1 Spanned (android.text.Spanned)1 SPAN_EXCLUSIVE_EXCLUSIVE (android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)1 ImageSpan (android.text.style.ImageSpan)1