Посоветуйте бесплатный софт конвертер
на Java - HTML в PDF. Предпочтительно
динамический. Есть большой проект, Web,
требуется добавить на странички
кнопки, чтобы получить их же в PDF.
Единственное, что накопал это HTMLDOC, но
не хотелось бы использовать внешнего
софта, а сделать через Java.
Спасибо.
Вот такой есть вариант про HTML в FO
http://html2fo.sourceforge.net/
Еще пару слов о решении такой задачи
есть тут
http://www.biglist.com/lists/xsl-list/archives/200309/msg00869.html
Теперь эту фигню надо хитрым образом
аккуратно соединить вместе, и
выстроить правильную цепочку
(реализацию). Однако, я так понимаю что
вся новомодная штуковина в виде CSS и
т.п. "отдыхает".
http://www-106.ibm.com/developerworks/library/x-xslfo2app/
Интересное почти пошаговое
руководство по всему этому делу. Так и
называется "HTML to Formatting Objects (FO) conversion guide"
(и поясняется - Use these XSLT templates to speed your
conversions of HTML elements to FO and thence to PDF).
Автор жутко вУмный человек, Doug Tidwell,
автор и со-автор нескольких книг по XML,
XSL и т.п. вещам (целая наука этот XML! :-)
В фильтре перехватываю html, дальше
преобразования, и клиенту отправляю pdf.
Получилось универсальное решение для
всего веб приложения (отмазались от 20
hard-coded репортов :) )
Преобразования следующие:
html-TIDY->
xhtml-XSL->
fo-FOP->pdf
xsl для преобразования из xhtml в fo взял с
ibm. Переделал ту часть что касалась
таблиц.
Так как проект англоязычный с
русификацией не возился.
http://xml.apache.org/fop/
http://tidy.sourceforge.net/
http://www-106.ibm.com/developerworks/library/x-xslfo2app/
в котором я заменяю respon
использую JTidy, для преобразования из html
в xhtml
получается что то вроде такого:
........
import org.w3c.tidy.Tidy;
............
public void html2xhtml(InputStream htmlInputStream,
OutputStream xhtmlOutputStream) throws IOException{
Tidy tidy = new Tidy();
.... //Tidy config
tidy.parse(htmlInputStream, xhtmlOutputStream);
...
}
Немного дегтя: не всегда tidy
справляется, например были проблемы с
корректным комментированием javaScript
Нет поддержки SAX, приходиться
разрывать Pipe