В RFC 1942 упоминается стандартный двухпроходный алгоритм: http://www.ietf.org/rfc/rfc1942.txt, однако я не видел хороших реальных реализаций. Кто-нибудь знает об этом? Мне не удалось найти ничего полезного в базах кода Mozilla или WebKit, но я не совсем уверен, где искать.
Я предполагаю, что на самом деле это может быть более серьезная проблема, связанная с необходимостью фактически отображать HTML (содержимое ячеек таблицы), но просто для простоты - таблица HTML с открытым текстом в виде изображения. Даже алгоритм рендеринга HTML-таблицы, игнорирующий часть «как изображение» ...






Отображение таблицы html нетривиально из-за различных способов указания размеров ячеек, вложенности таблиц в таблицы и т. д.
если все, что вам нужно, это изображение, простым решением будет элемент управления браузером .NET (который в основном является COM-компонентом для IE) и функция захвата экрана.
если вы хотите получить какой-либо источник для управления, исходный код Mozilla должен быть доступен
Спасибо! Я ищу что-то более низкоуровневое, однако ... это на C, кстати.
@ [christopher Lang]: исходный код Mozilla находится на C / C++ и должен содержать то, что вы хотите. developer.mozilla.org/en/Download_Mozilla_Source_Code
Стивен, спасибо за ссылку! После дальнейшего поиска кода, который я нашел - mxr.mozilla.org/mozilla-central/source/layout/tables/… Это Закрыть того, что мне нужно ... Я собираюсь попробовать его с нуля и вернуться к их кодовой базе. Еще раз спасибо!
Я не уверен, будет ли это соответствовать вашим ограничениям или нет, но вы можете попробовать использовать IE или элемент управления IE с MSHTML и интерфейсом IHTMLElementRender для визуализации таблицы в контексте устройства.
Спасибо за предложение - к сожалению, это решение будет кроссплатформенным (и мобильным!), Поэтому я пытаюсь получить алгоритм общего назначения без сторонних библиотек. Еще раз спасибо!
Если можно использовать коммерческий инструмент, обратите внимание на:
HtmlCapture ActiveX Control V2.0 (originally named HtmlSnap)
Некоторые особенности, которые они заявляют:
Спасибо! Это полезно и близко. Я нашел бесплатную библиотеку, которая делает нечто подобное: terrainformatica.com/htmlayout/main.whtm Единственная проблема в том, что я хотел бы сделать это на низком уровне без каких-либо внешних библиотек, особенно не коммерческих. Однако, спасибо!
@ christopher-lang Хорошая находка; HTMLayout выглядит интересно.
Если у вас есть XHTML, а не простой HTML, вы должны иметь возможность получать содержимое этих ячеек вместе с информацией о структуре таблицы: colspan, rowspan и т. д. Используя эту информацию, вы можете визуализировать таблицу, используя собственную границу, отступы и значения маржи.
Все усложняется, когда вы также хотите отобразить определенные пользователем размеры. Но для извлечения данных таблицы и их рисования вы можете использовать синтаксический анализатор XML. Парсер PHP находится здесь: http://ca3.php.net/xml
Спасибо, но получить фактическую информацию о таблице не проблема - фактически выполнить операцию рендеринга для того, что влечет за собой информация! Еще раз спасибо за предложение!
Один из подходящих инструментов: http://www.terrainformatica.com/htmlayout/main.whtm
Эта библиотека предлагает способ захвата визуализированного HTML в изображение, однако это не открытый исходный код (но бесплатный!). Надеюсь, это будет полезно для некоторых!
К сожалению, мое приложение кроссплатформенное, C / C++ без MFC или зависимостей от платформы (кошмар!). Я надеюсь найти алгоритм общего назначения для рендеринга таблиц. Я думаю, что двухпроходный вариант из RFC довольно близок, поэтому я, вероятно, собираюсь просто покопаться и поработать против него. Я обязательно напишу об этом в блоге и опубликую здесь свое возможное решение, если смогу!
Взгляните на Принц XML - это коммерческий инструмент для рендеринга XML-документов в стиле CSS (включая XHTML) в PDF-файлы. Этот инструмент соответствует основным стандартам W3C, таким как XHTML и CSS2.1. Вы можете попробовать бесплатную демо-версию на их домашней странице!
Поскольку вам нужно изображение: не должно быть большой проблемой программно преобразовать сгенерированные PDF-файлы в изображения.
Спасибо, Кристоф! Похоже, это интересный инструмент - мне интересно, как они захватывают HTML ... хм. К сожалению, это коммерческий вариант! Я хотел бы реализовать это с нуля или, по крайней мере, использовать библиотеку с открытым исходным кодом, из которой я мог бы учиться.
Посмотрите эту ветку, чтобы найти что-то с открытым исходным кодом, которое выполняет аналогичную работу - stackoverflow.com/questions/597348/…
Вы просите алгоритм, люди рекомендуют инструменты. Мне это не нравится.