Pregunta

Tengo un requisito del proyecto para representar HTML y capturar la imagen renderizada como un archivo en un servidor de CentOS 5.4 sin cabeza. Mis requisitos específicos son:

1) de entrada será una URL a la página de render (o file: // URL a un archivo HTML local), la salida será un archivo de imagen que contiene la imagen renderizada de la página
 2) CSS debe ser soportada por el procesador hasta el nivel-1 CSS
 3) Las imágenes estáticas en la página deben visualizarse correctamente en la imagen renderizada, incluyendo cualquier color transparente en GIF o PNG archivos
 4) Debe ser capaz de correr sin cabeza en un CentOS 5.4 del servidor.
 5) Solución no debe depender de ningún producto o componente que no es libre para uso comercial

No necesito hacer nada con la página que no sea conseguir la captura de pantalla y guardarlo en una imagen. La parte más difícil parece estar haciendo esto en un ambiente sin cabeza. Algunas de las soluciones que he visto habla de la necesidad de una pantalla con el fin de trabajo.

¿Alguna sugerencia?

Gracias de antemano, Jim

SOLUCIÓN: Terminé usando la biblioteca Standard Widget Toolkit (www.eclipse.org/swt) por sus capacidades de navegador integrado. Esto me permitió abrir mediante programación una ventana con un control de explorador en el mismo, representar la página, y luego capturar el contenido de la ventana de un archivo de imagen (por lo general un PNG). La única desventaja de este enfoque que no se puede evitar es un "parpadeo" cuando la ventana debe hacerse visible por un momento con el fin de hacer la captura de pantalla. Puedo vivir con eso. El resto era código sólo para inicializar los objetos SWT que obtienen los recursos del sistema, un oyente para comprobar la finalización con éxito de la carga de la página, y algo de código para limpiar una conexión colgado (cuando la carga de la página nunca se completa por cualquier razón).

Tengo un compañero de equipo para jugar con XVFB (framebuffer virtual X) en CentOS Linux. Las pruebas iniciales parecen funcionar, lo que parece que el consejo del cartel de abajo (que dijo a tratar XVFB) puede ser una solución viable para la parte del servidor sin cabeza de mi problema.

¿Fue útil?

Solución

Puede iniciar un entorno X-Windows virtual usando XVFB. Ahora puede iniciar un navegador normal para representar la página y usar una utilidad screencapture para capturar el contenido de la ventana. No es bonito, pero straghtforward hacer.

WebKit es de código abierto e integrable, tal vez usted puede utilizar esto en una pequeña aplicación nativa para rendir en un lienzo y guardarlo en el disco?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top