Кто-нибудь знает хороший алгоритм для рендеринга HTML-таблицы в изображение?

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

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

Вы просите алгоритм, люди рекомендуют инструменты. Мне это не нравится.

Nils 05.04.2012 11:26
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
1
2 351
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

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

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

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

Спасибо! Я ищу что-то более низкоуровневое, однако ... это на C, кстати.

eclipxe 13.10.2008 11:02

@ [christopher Lang]: исходный код Mozilla находится на C / C++ и должен содержать то, что вы хотите. developer.mozilla.org/en/Download_Mozilla_Source_Code

Steven A. Lowe 13.10.2008 19:41

Стивен, спасибо за ссылку! После дальнейшего поиска кода, который я нашел - mxr.mozilla.org/mozilla-central/source/layout/tables/… Это Закрыть того, что мне нужно ... Я собираюсь попробовать его с нуля и вернуться к их кодовой базе. Еще раз спасибо!

eclipxe 13.10.2008 20:37

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

Спасибо за предложение - к сожалению, это решение будет кроссплатформенным (и мобильным!), Поэтому я пытаюсь получить алгоритм общего назначения без сторонних библиотек. Еще раз спасибо!

eclipxe 13.10.2008 11:04

Если можно использовать коммерческий инструмент, обратите внимание на:

HtmlCapture ActiveX Control V2.0 (originally named 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.

Спасибо! Это полезно и близко. Я нашел бесплатную библиотеку, которая делает нечто подобное: terrainformatica.com/htmlayout/main.whtm Единственная проблема в том, что я хотел бы сделать это на низком уровне без каких-либо внешних библиотек, особенно не коммерческих. Однако, спасибо!

eclipxe 13.10.2008 11:05

@ christopher-lang Хорошая находка; HTMLayout выглядит интересно.

micahwittman 14.10.2008 09:30

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

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

Спасибо, но получить фактическую информацию о таблице не проблема - фактически выполнить операцию рендеринга для того, что влечет за собой информация! Еще раз спасибо за предложение!

eclipxe 13.10.2008 11:01

Один из подходящих инструментов: http://www.terrainformatica.com/htmlayout/main.whtm

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

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

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

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

Спасибо, Кристоф! Похоже, это интересный инструмент - мне интересно, как они захватывают HTML ... хм. К сожалению, это коммерческий вариант! Я хотел бы реализовать это с нуля или, по крайней мере, использовать библиотеку с открытым исходным кодом, из которой я мог бы учиться.

eclipxe 13.10.2008 17:57

Посмотрите эту ветку, чтобы найти что-то с открытым исходным кодом, которое выполняет аналогичную работу - stackoverflow.com/questions/597348/…

Daniel Von Fange 03.03.2009 17:08

Другие вопросы по теме