Кто-нибудь знает хороший алгоритм для рендеринга HTML-таблицы в изображение? - PullRequest
1 голос
/ 13 октября 2008

Существует стандартный двухпроходный алгоритм, упомянутый в RFC 1942: http://www.ietf.org/rfc/rfc1942.txt, однако я не видел хороших реализаций в реальном мире. Кто-нибудь знает что-нибудь? Мне не удалось найти ничего полезного в базах кода Mozilla или WebKit, но я не совсем уверен, где искать.

Я полагаю, что на самом деле это может быть более серьезной проблемой, связанной с необходимостью визуализировать HTML (содержимое ячеек таблицы), но просто для простоты - открытым текстом HTML-таблицы в виде изображения. Даже алгоритм рендеринга таблиц HTML, игнорирующий часть «как изображение» ...

Ответы [ 6 ]

1 голос
/ 13 октября 2008

Если коммерческий инструмент является опцией, посмотрите:

HtmlCapture ActiveX Control V2.0 (первоначально назывался HtmlSnap)

Некоторые функции, на которые они претендуют:

  • Вызвав SnapHtmlString (), вы можете сделать снимок для строки html.
  • Получите снимки, сделанные Microsoft IE или Mozilla Firefox.
  • Просто вызывая SnapUrl () и SaveImage (), вы можете сделать снимок веб-страницы в различные изображения, такие как BMP, JPG, JPEG, GIF, PNG, TIF, TGA и PCX.
  • Преобразование HTML в векторный формат изображения, такой как EMF и WMF.
  • Автономный элемент управления ActiveX без сторонних зависимостей.
  • Поддержка пользовательского вывода gdi полученного изображения.
  • Поддержка сохранения полученного изображения как в файл, так и в память.
  • Поддержка сохранения как полноразмерной веб-страницы, так и миниатюры.
  • Сделайте снимок всей веб-страницы в одно изображение без полос прокрутки.
  • Создание черно-белых или черно-белых изображений с эффективными алгоритмами для сохранения качества.
  • Поддержка уровня сжатия JPEG, выбор метода сжатия TIFF и GIF.
  • Поддержка установки глубины цвета на изображениях при максимально возможном сохранении качества изображения.
  • Выборочно сохраняйте ActiveX, изображения, Java-апплеты, сценарии и видео на веб-странице, как вы хотите.
  • Отправка пользовательских файлов cookie, заголовков http, учетных данных в запросах снимков.
  • Делайте снимки веб-страниц через прокси-сервер.
  • Предоставлено более 30 примеров, написанных на VC, C-, Delphi, VB, C ++ Builder, Java, JScript, Perl, VBScript, ASP, ASP.net и PHP.
0 голосов
/ 13 октября 2008

Взгляните на Prince XML - это коммерческий инструмент для рендеринга документов в стиле CSS (включая XHTML) в PDF. Этот инструмент соответствует основным стандартам W3C, таким как XHTML и CSS2.1. Вы можете попробовать бесплатную демо-версию с их домашней страницы!

Поскольку вам нужно изображение: не должно быть большой проблемой преобразовывать созданные PDF-файлы программно в изображения.

0 голосов
/ 13 октября 2008

Один инструмент, который подходит близко: http://www.terrainformatica.com/htmlayout/main.whtm

Эта библиотека предлагает способ захвата отрендеренного HTML-изображения, однако это не открытый код (но бесплатный!). Надеюсь, что это полезно для некоторых!

К сожалению, мое приложение кроссплатформенное, C / C ++ без MFC или зависимости от платформы (кошмар!). Я надеюсь найти алгоритм общего назначения для рендеринга таблиц. Я думаю, что двухпроходный вариант из RFC подходит довольно близко, поэтому я, вероятно, собираюсь просто покопаться и работать против этого. Я обязательно напишу об этом в блоге и опубликую свое возможное решение здесь, если смогу!

0 голосов
/ 13 октября 2008

Если у вас есть XHTML, а не обычный HTML, вы должны иметь возможность извлекать содержимое этих ячеек вместе с информацией о структуре таблицы: colspan, rowspan и т. Д. Используя эту информацию, вы можете визуализировать таблицу, используя собственную границу , отступы и значения полей.

Вещи становятся сложными, когда вы также хотите визуализировать определенные пользователем размеры. Но для извлечения данных таблицы и их рисования вы можете использовать синтаксический анализатор XML. Парсер PHP здесь: http://ca3.php.net/xml

0 голосов
/ 13 октября 2008

Я не уверен, будет ли это соответствовать вашим ограничениям, но вы можете попробовать использовать IE или элемент управления IE с MSHTML и интерфейсом IHTMLElementRender для отображения таблицы в контексте устройства.

0 голосов
/ 13 октября 2008

HTML-рендеринг таблиц нетривиален из-за различных способов указания размеров ячеек, таблиц, вложенных в таблицы и т. Д.

если все, что вам нужно, это изображение, то простым решением будет элемент управления браузером .NET (который в основном является компонентом COM для IE) и функция захвата экрана

если вы хотите, чтобы какой-то источник манипулировал, источник Mozilla все еще должен быть доступен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...