2009-05-08 29 views
9

Me pregunto si hay una biblioteca de JavaScript disponible que me permita generar una Imagen a partir de los contenidos de un DIV.Crear una imagen de un DIV en JavaScript (GIF/PNG)

Básicamente esto es necesario para algunos códigos de impresión del lado del servidor, que necesitan imprimir un fondo desde el navegador.

Lo que al final me gustaría hacer es codificar los contenidos DIV en formato PNG y publicar los datos codificados con la operación de impresión.

¿Alguna idea si esto es posible?

[EDITAR] Lo que tengo es una aplicación de mapeo donde los datos de fondo provienen de un servidor de imágenes directamente en un navegador DIV (Think Google Maps). Ese div es de fondo para mí los datos principales. Cuando se pulsa Imprimir, el servidor genera un PDF a partir de los datos que conoce, pero no sabe nada sobre los datos de fondo del navegador. Lo que realmente me gustaría es poder proporcionar al servidor la imagen de fondo de los navegadores de alguna manera.

Saludos, Ro

+0

Lo que tengo es una aplicación de mapeo donde los datos de fondo provienen de un servidor de imágenes directamente en un navegador DIV (Think Google Maps). Ese div es de fondo para mí los datos principales. Cuando se pulsa Imprimir, el servidor genera un PDF a partir de los datos que conoce, pero no sabe nada sobre los datos de fondo del navegador. ¡Lo que realmente me gustaría es poder proporcionar al servidor la imagen de fondo de los navegadores de alguna manera! –

Respuesta

0

I Creo que he encontrado una forma de hacerlo.

1) Cuando el usuario presiona Imprimir, interrogue al DIV
2) Las imágenes en ese DIV están siendo generadas por la OpenLayers API
3) Coge la URL de cada imagen
4) Coge la ubicación en la pantalla de cada imagen
5) Traducir la ubicación de la pantalla en un lugar del mundo real (no tengo API para esto)
6) Como parte de la impresión, envíe todas las URL de la imagen junto con sus extensiones del mundo real
7) Permita que el servidor vuelva a solicitar las imágenes y dibuje en sus ubicaciones correspondientes.

+5

¿Puedes ampliar tu respuesta con más explicaciones? –

+0

Esta no es una respuesta precisa para esta pregunta, aunque podría haber resuelto su problema. La pregunta es acerca de cómo capturar un div como una imagen. Mire esto para una respuesta https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Drawing_DOM_objects_into_a_canvas – Gautam

1

Se puede crear una etiqueta de imagen desde JavaScript, pero no la imagen real en ella: JS no tiene comandos para asignar memoria para el mapa de bits y no tiene comandos para prestar cualquier cosa en él.

La solución habitual es tener un generador de informes en el servidor que crea la imagen a petición. Mira BIRT o JasperReports.

[EDITAR] Según su comentario, la solución es simple: examine el DIV, busque la URL de la imagen de fondo y reemplace el DIV con un elemento IMG. Coloque la URL en el atributo SRC y luego imprima.

+0

Cierto, así es cómo funcionan otras cosas ... Lo que tengo es una aplicación de mapeo en la que los datos de fondo provienen de un servidor de imágenes directamente en un navegador DIV (Think Google Maps). Ese div es de fondo para mí los datos principales. Cuando se pulsa Imprimir, el servidor genera un PDF a partir de los datos que conoce, pero no sabe nada sobre los datos de fondo del navegador. ¡Lo que realmente me gustaría es poder proporcionar al servidor la imagen de fondo de los navegadores de alguna manera! –

+0

¿No existe el nuevo "Canvas"? Creo que puedes dibujar cosas usando eso? –

+0

Sí, el lienzo debería funcionar también si la impresora lo admite. –

0

Realmente no creo que esto sea posible en el navegador, ciertamente no sin algún tipo de complemento.

¿Podría enviar alguna información de coordenadas o algo al servidor web y de esa manera solicitar al servidor web la misma imagen de mapa del servidor de imágenes? .

0

generando imágenes sólo era posible en IE5 :(A continuación, por razones de seguridad, la dejaron caer todavía estoy perdiendo que

0

¿Tiene que hacerse en el lado del navegador? He visto dónde puede hacer una llamada del lado del servidor y el tipo MIME en la respuesta del servidor es el tipo de imagen.Creo que el ejemplo en el que estoy pensando es para jpegs codificados con b64 en un db, pero el proceso debería ser el mismo. La respuesta sería la información que está actualmente en su DIV. Lo siento si estoy fuera de la base.

1

Pregunta muy interesante.

En realidad resuelvo este problema usando ajax (transfiero las posiciones de las imágenes al servidor, el servidor crea una imagen de las piezas, la guarda y envía la url al cliente). No me gusta mucho esta solución pero aún no sé otra.

Cuestiones relacionadas