У меня есть база данных, полная небольших HTML-документов, и мне нужно программно вставить несколько, скажем, в PDF-документ с iText или документ Word с Aspose.Words. Мне нужно сохранить любое форматирование в HTML-документах (в разумных пределах соблюдение тегов <b> является обязательным, CSS вроде <span style = "blah"> - это хорошо).
И iText, и Aspose работают (примерно) примерно так:
Document document = new Document( Size.A4, Aspect.PORTRAIT );
document.setFont( "Helvetica", 20, Font.BOLD );
document.insert( "some string" )
document.setBold( true );
document.insert( "A bold string" );
Поэтому (я думаю) мне нужен какой-то HTML-парсер, который я могу проверить на наличие строк и стилей для вставки в мой документ.
Кто-нибудь может предложить хорошую библиотеку или разумный подход к этой проблеме? Платформа - это Java




Adobe Acrobat Pro позволяет захватывать сайты через HTTP и отлично справляется с сохранением стиля и макета. Я не использовал его с точки зрения API, но, возможно, стоит изучить его.
Если HTML - это «правильно сформированный XML» (XHTML), почему бы не использовать синтаксический анализатор XML (например, Xerces), а затем программно проверить дерево DOM.
HTMLparser - хороший парсер HTML.
Я использовал это для анализа HTML в одном из моих проектов.
Вы можете написать свои собственные фильтры для анализа HTML на предмет того, что вы хотите, поэтому
Тег <br> разобрать несложно
Вы можете разобрать CSS, используя CssSelectorNodeFilter
Вам, вероятно, было бы лучше получить компонент, который переходит непосредственно из HTML в PDF или Word, а затем попытаться проанализировать HTML-документ и самостоятельно продублировать форматирование на основе HTML. Если вы хотите преобразовать HTML в PDF и используете .Net, Winnovative является хорошим решением.
Обратите внимание на рендерер xhtml летающая тарелка - они отображают правильно сформированные файлы XHTML в PDF и позволяют управлять выводом с помощью CSS.
Это предложение позволило мне создать элементарную версию того, что я хочу, примерно за час и около 100 строк кода. Победитель - это ты!