HTML-рендеринг без изображений в CentOS 5.4

У меня есть требование проекта для рендеринга HTML и захвата отрендеренного изображения в виде файла на головном сервере CentOS 5.4. Мои конкретные требования:

1) На входе будет отображаться URL-адрес страницы для отображения (или file:// URL-адрес локального HTML-файла), на выходе будет файл изображения, содержащий отображаемое изображение страницы.
2) CSS должен поддерживаться средством визуализации до уровня CSS-1
3) Статические изображения на странице должны правильно отображаться в отображаемом изображении, включая любой прозрачный цвет в файлах.GIF или.PNG.
4) Должен быть в состоянии работать на головном сервере CentOS 5.4.
5) Решение не должно зависеть от какого-либо продукта или компонента, который не является бесплатным для коммерческого использования.

Мне не нужно ничего делать со страницей, кроме как сделать снимок экрана и сохранить его в изображение. Трудная часть, кажется, делает это в безголовой среде. Некоторые из рассмотренных мною решений нуждаются в отображении, чтобы работать.

Какие-либо предложения?

Заранее спасибо джим

РЕШЕНИЕ: я закончил тем, что использовал библиотеку Standard Widget Toolkit (www.eclipse.org/swt) для его встроенных возможностей браузера. Это позволило мне программно открыть окно с браузерным элементом управления, визуализировать страницу, а затем записать содержимое окна в файл изображения (обычно PNG). Единственный недостаток этого подхода, которого нельзя избежать, - это "мерцание", когда окно нужно сделать на мгновение видимым, чтобы сделать снимок экрана. Я могу жить с этим. Остальное было просто кодом для инициализации объектов SWT, которые получают системные ресурсы, слушателем для проверки успешного завершения загрузки страницы и некоторым кодом для очистки зависшего соединения (когда загрузка страницы никогда не завершается по какой-либо причине).

У меня есть товарищ по команде, чтобы поиграть с xvfb (X виртуальный кадровый буфер) в CentOS Linux. Начальные тесты, похоже, работают, так что, похоже, совет от автора ниже (который сказал попробовать xvfb) может стать жизнеспособным решением для проблемы с автономной серверной частью моей проблемы.

1 ответ

Решение

Вы можете запустить виртуальную среду X-windows, используя xvfb. Теперь вы можете запустить обычный браузер для визуализации страницы и использовать утилиту screencapture для захвата содержимого окна. Это не красиво, но прямолинейно.

WebKit с открытым исходным кодом и встраиваемый, может быть, вы можете использовать это в небольшом родном приложении для рендеринга на холсте и сохранить его на диск?

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