Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > iText html внутри cdata tag


Автор: DashkaTk 15.9.2009, 18:41
Здравствуйте, господа разработчики Очень нуждаюсь в помощи.
Суть проблемы
предисловие

надо получить pdf из xml с четко установленными стилями в конечном файле
(например, текс из  тега в xml <agenda>, в pdf должен быть смещен на 250 пикселей + быть подчеркнутым и еще целая корзинка настроек)

общее описание реализации
на входе у меня xml
из этого xml генерирую нужный мне промежуточный xml с помощью xslt
далее описываю тагмап на этот xml (xml содержит теги по типу text_bold_10 и так далее)
с помощью iText получаю pdf на выходе

Все зашибись, все хорошо работает
Но! тут оказывается, что тег <agenda> может содержать тег <!CDATA[[]]>, который в свою очередь, содержит html код, и который, в конце концов, должен быть в pdf. Тобишь, 
<!CDATA[[<table border='1'><tr><td>text</td></tr></table>]]> должно быть табличкой...

текущая реализация 
в xslt запрещаю ескейпить символы < >  и в тагмап я описываю основные теги (b, u, i), но описывать весь список тегов — это, простите, извращение

Натолкните на правильное решение, даже если оно подразумевает все переписать(не хотелось, правда)
есть мысль — заменить схему xml — xml — pdf на xml — html — pdf и в качестве хэндлера в iText использовать его SAXmyHtmlHandler

в общем, буду премного благодарна и должна по гроб жизни

Автор: bvfalcon 20.9.2009, 17:56
Расскажите чуть подробнее о предыстории этого XML.
XML, как известно, формат для описания чего угодно и можно придумать сотню способов преобразования XML2PDF.
Интересно именно вот что: закреплена ли структура xml в DTD (XSD), описывается еще как-то или вообще произвольная.

Автор: DashkaTk 21.9.2009, 10:55
Цитата

Расскажите чуть подробнее о предыстории этого XML.

генерится сторонним сервисом, к нему доступа не имею, да и незачем
Цитата

XML, как известно, формат для описания чего угодно и можно придумать сотню способов преобразования XML2PDF.

нужно именно iText, уже много на этом решении повязано, в том числе и не моей работы
Цитата

Интересно именно вот что: закреплена ли структура xml в DTD (XSD), описывается еще как-то или вообще произвольная. 

не произвольная, есть xsd

Автор: bvfalcon 21.9.2009, 19:31
Хоть я и не услышал, чего хотел, но все же попробую помочь.
То, что на iText много повязано, не значит ровным счетом ничего. В том плане что никак не помешает использовать библиотеку, отличную от iText. Хотя что там, iText - одна из самых центровых библиотек для работы с PDF в Java.
Попробуйте использовать JasperReports для преобразования XML в PDF. Кстати тоже использует iText.
Создаете нужную форму-отчет в iReport, из своей программы берете скомпилированный файл отчета, передаете ему JRXMLDataSource (которому скормите ваш XML) и генерите PDF.
А то, чем вы сейчас занимаетесь - это прошлый век велосипедостроения.

Автор: DashkaTk 21.9.2009, 23:06
Цитата

А то, чем вы сейчас занимаетесь - это прошлый век велосипедостроения. 

учту, точнее оценю время на рефакторинг и решу, что мне дороже обойдется )
по поводу JasperReports:
сейчас основная проблема в том, что приезжает xml, содержащий html в полях с текстом
то есть есть какие то незыблемые настройки к основным тегам и произвольный html в текстах
(я понимаю, вы сейчас скажете, ничего не мешает это переделать, но важно какой именно подход меньше требует времени)
как JasperReports это решает, насколько он сложен в освоении?
я конечно могу прогуглить, но лучше еще и спросить )

Автор: DashkaTk 24.9.2009, 14:53
покурила доки по  jasperReport
теперь понятно к чему был вопрос 
Цитата

Расскажите чуть подробнее о предыстории этого XML.

Нет, он мне не подходит
Он больше для манипуляции и упорядочивании полученных данных (в большинстве случаев аля селект фром датабэйз), у меня же упор на всякие рюшики, приблудки и красивости. Это может быть бланк приглашения, который приехал в xml, который содержит куча атачей с картинками, табличками, разноуровневым шрифтом.
да,  jasper может понимать html при простановке ему соответствующего атрибута, но как отзываются специалисты, половина не рендерится
исправьте меня, если я не права в какой-то букве

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)