Безголовый рендеринг HTML в изображение на CentOS 5.4 - PullRequest
2 голосов
/ 11 июня 2010

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

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

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

Есть предложения?

Заранее спасибо, Jim

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

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

1 Ответ

1 голос
/ 11 июня 2010

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

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

...