Посоветуйте конвертер HTML в PDF

38 views
Skip to first unread message

Alexander Prohorenko

unread,
Apr 11, 2005, 12:49:59 PM4/11/05
to ua-de...@googlegroups.com
Привет.

Посоветуйте бесплатный софт конвертер
на Java - HTML в PDF. Предпочтительно
динамический. Есть большой проект, Web,
требуется добавить на странички
кнопки, чтобы получить их же в PDF.

Единственное, что накопал это HTMLDOC, но
не хотелось бы использовать внешнего
софта, а сделать через Java.

Спасибо.

Igor Nuzhnov

unread,
Apr 11, 2005, 1:04:42 PM4/11/05
to ua-de...@googlegroups.com
Есть библиотека fop - позволяет xsl-fo документы преобразовывать в pdf и я
думаю существует xslt для преобразования html в fo, может быть даже на сайте
w3c

Olexiy Prokhorenko

unread,
Apr 11, 2005, 3:17:22 PM4/11/05
to ua-de...@googlegroups.com

Igor Nuzhnov wrote:
> Есть библиотека fop

> позволяет xsl-fo
> документы преобразовывать
> в pdf и я думаю существует
> xslt для преобразования html
> в fo, может быть даже на
> сайте w3c

Вот такой есть вариант про HTML в FO
http://html2fo.sourceforge.net/
Еще пару слов о решении такой задачи
есть тут
http://www.biglist.com/lists/xsl-list/archives/200309/msg00869.html

Теперь эту фигню надо хитрым образом
аккуратно соединить вместе, и
выстроить правильную цепочку
(реализацию). Однако, я так понимаю что
вся новомодная штуковина в виде CSS и
т.п. "отдыхает".

Olexiy Prokhorenko

unread,
Apr 11, 2005, 3:23:01 PM4/11/05
to ua-de...@googlegroups.com
Блин, а более интересную ссылочку то и
забыл! :-)

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! :-)

Alexander Prohorenko

unread,
Apr 12, 2005, 9:33:50 AM4/12/05
to ua-de...@googlegroups.com
Вот и вопрос - стоит ли овчинка выделки,
когда HTMLDOC предоставляет тот же сервис,
за меньшие деньги.

Olexiy Prokhorenko

unread,
Apr 12, 2005, 11:07:21 AM4/12/05
to ua-de...@googlegroups.com
Большие? Всё что описано вверху --
бесплатное :-)
Врядли HTMLDOC доплачивают :-)

Dmitry Sennikov

unread,
Apr 13, 2005, 12:47:27 PM4/13/05
to ua-de...@googlegroups.com
Igor Nuzhnov wrote:
> Есть библиотека fop - позволяет xsl-fo документы преобразовывать в pdf и я
> думаю существует xslt для преобразования html в fo, может быть даже на сайте
> w3c
Там везде этот html должен быть well formatted. А это может стать камнем
преткновений.

>
>
>>-----Original Message-----
>>From: Alexander Prohorenko [mailto:alexander....@gmail.com]
>>Sent: Monday, April 11, 2005 7:50 PM
>>To: ua-de...@googlegroups.com
>>Subject: Посоветуйте конвертер HTML в PDF
>>
>>
>>Привет.
>>
>>Посоветуйте бесплатный софт конвертер
>>на Java - HTML в PDF. Предпочтительно
>>динамический. Есть большой проект, Web, требуется добавить
>>на странички кнопки, чтобы получить их же в PDF.

Посмотри может по роду твоей задачи у тебя есть XML, тогда задача
значительно упрощаеться. Смотри всё тотже FO.
Впринципе для веб проэкта очень популяно делать всё в XML а потом с
помощью трансформаций получать PDF или HTML или что-то другое.

>>Единственное, что накопал это HTMLDOC, но не хотелось бы
>>использовать внешнего софта, а сделать через Java.
>>

Из других вариантов не перечисленых здесь это всемогущий принтер.
Тоесть просто PDF принтер, решений довольно много и резутат тоже
нормальный. Смотри если подходит к задаче, то будет как вариант.
Принтер на стороне сервера.


>>Спасибо.
>>

Alexander Prohorenko

unread,
Apr 13, 2005, 1:56:47 PM4/13/05
to ua-de...@googlegroups.com
Подскажите что за принтер и где про
него читать.

Alexander Prohorenko

unread,
Apr 14, 2005, 3:07:32 AM4/14/05
to ua-de...@googlegroups.com
В больше степени даже интересен не
принтер - их куча, тот же cups-pdf - а как
например на него печатать в webapp. Я так
понимаю, нужен тогда тот же
виртуальный Java browser, который и пошлет
на печать на этот принтер. А что за Java
browser есть подобный, или какой то другой
механизм?

Alexander Prohorenko

unread,
Apr 14, 2005, 6:32:13 AM4/14/05
to ua-de...@googlegroups.com
И насчет XML-FO - тут другая проблема.
Насколько я знаком с предметом, PDF я
получу достаточно слабенький, как и HTML,
т.к. о CSS и прочих вещах речь идти не
может.

Dmitry Sennikov

unread,
Apr 14, 2005, 8:56:56 AM4/14/05
to ua-de...@googlegroups.com
Там можно получить довольно не слабый,
а очень даже ничего :)
Мой сотрудник использовал всё это для печатной подготовки документации
очень известной фирмы. Так что гибкости у этого подхода не занимать.
К недостаткам можно отнести довольно объёмный материал к изучению.
Чем красивей надо тем больше учить.
А также в то время мало выбо спецов которые могли на форумах помочь в
каком-то вопросе.

Dmitry Sennikov

unread,
Apr 14, 2005, 9:03:05 AM4/14/05
to ua-de...@googlegroups.com
Впринципе да... нужно нечто Java browser. Таких можно поскать в гугле.
Но этот путь очень шаток, и если он на пряму не подходит к проэкту,
то выбор его принесёт много проблем - Java browser и неполное
соответствие того что хочешь напечатать к тому что напечаталось.
Такое подходит когда у тебя есть что-то что умеет печатать.

Можно использовать external программы как експлорер и ежи с ними ...
ну это уже изврат.

Alexander Prohorenko

unread,
Apr 15, 2005, 12:10:59 PM4/15/05
to ua-de...@googlegroups.com
В этом и проблема. Честно говоря,
получить лучшие результаты чем с PDF
принтером из HTML - я не вижу. Но найти Java
browser для этого никак не могу. А HTMLDOC
выдает такое иногда, что плакать
хочется.

Dmitry Sennikov

unread,
Apr 18, 2005, 3:48:39 AM4/18/05
to ua-de...@googlegroups.com
Alexander Prohorenko wrote:
> В этом и проблема. Честно говоря,
> получить лучшие результаты чем с PDF
> принтером из HTML - я не вижу. Но найти Java
> browser для этого никак не могу.
1. Надо определиться насколько масштабный есть сервер и сколько будет
одновременно "печататься" PDF. Если нагрузка действительно большая ->
XML + XSL:FO
2. Если нагрузка маленькая ->
2.1 Нужно что-то с чего можно распечатать на принтер. Тут нужно
определинь насколько сложный у тебя будет HTML. В зависимости от
требований ты можешь поискать какой-то контрол которые отображает HTML.
Максимум это если сервер на винде можно через Com + Java =
http://danadler.com/jacob/ (also goodle search "Java-COM bridge")
вызвать експлорер и с него распечатать страничку.

Java Browser
http://www.webrenderer.com/ - платное, зато всё поддерживает
за пять мин, безплатных с более мение функциональностьб не нашел :(

Мой совет: Ты говорил что проект большой, если это так - юзай XML со
всякими трансформациями. Это немного сложновато для понимания, но по
крайней мере это потом пригодиться в жизни :)


А HTMLDOC
> выдает такое иногда, что плакать
> хочется.
Тут как говориться надо чем-то жертвовать.

Alexander Kravchuk

unread,
May 16, 2005, 3:59:38 AM5/16/05
to ua-de...@googlegroups.com
У себя в проекте добавили возможност
печати каждой веб-страницы в pdf.

В фильтре перехватываю 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/

Alexander Prohorenko

unread,
May 22, 2005, 10:31:13 AM5/22/05
to ua-de...@googlegroups.com
Что значит в фильтре перехватываю HTML?

"Alexander Kravchuk" <alex.kravchuk-Re5J...@public.gmane.org> wrote in message news:1116230378.3...@g44g2000cwa.googlegroups.com...

Alexander Kravchuk

unread,
May 22, 2005, 11:43:07 AM5/22/05
to ua-de...@googlegroups.com
У меня есть веб -фильтр (javax.servlet.Filter),
который маппиться на все
веб-приложение
------в методе doFilter():-----
*если в request есть параметр generatePdf :
**подменяю response своим wrapper
**пропускаю request на выполнение
(chain.doFilter())
**после этого, в моем wrapper содержится html
- ответ сервера на request
**преобразую html в pdf
**выдаю pdf в response

в котором я заменяю respon

Alexander Prohorenko

unread,
May 26, 2005, 6:49:16 AM5/26/05
to ua-de...@googlegroups.com
Вопрос.

HTML Tidy http://tidy.sourceforge.net/ по моему пониманию написан не на Java, соответственно не интегрируется в твой код, а ты его посто запускаешь. А это лишает смысла затею - так же можно запускать HTMLDOC http://www.htmldoc.org или другое подобное изваяние (естественно, в соответствии с J2EE spec через JCA). Или ты пользуешься JTidy (или JTidyServlet) http://jtidy.sourceforge.net/multiproject/jtidyservlet/, что добавляет смысл в затею? :)


"Alexander Kravchuk" <alex.kravchuk-Re5J...@public.gmane.org> wrote in message news:1116230378.3...@g44g2000cwa.googlegroups.com...
>

Alexander Kravchuk

unread,
May 27, 2005, 5:13:25 AM5/27/05
to ua-de...@googlegroups.com
-------Похоже предыдущий ответ направил
не в конфу :)

использую 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

Reply all
Reply to author
Forward
0 new messages