2012-03-06 21 views
6

Tengo un sitio web que estoy construyendo que toma los datos (el nombre de la persona) de un formulario y los publica en una "nota" personalizada en una tabla en la página siguiente. Quiero que el usuario pueda guardar su "nota" como una imagen con su nombre personalizado. ¿Hay alguna manera de guardar una TABLA HTML ESPECÍFICA como PNG? ¿Tal vez tomar una captura de pantalla de una coordenada específica en una página web?Guardar tabla HTML como imagen

Si no, ¿hay alguna forma de mostrar contenido PHP publicado desde el formulario en un lienzo HTML?

Cualquier ayuda sería genial. Estoy un poco sobre mi cabeza ahora mismo.

+2

eche un vistazo a las funciones de imagen integradas de php: http://nz.php.net/manual/en/refs.utilspec.image.php –

Respuesta

0

solución viable

  • uso FPDF para crear PDF de HTML (tabla)
  • uso ImageMagick para convertir PDF a PNG
0

Usted puede usar algo como html2ps

0

Puede también use Xvfb. Es un paquete de Linux. Significa "X-window Virtual Frame Buffer" (si se preguntaba por qué en la tierra tenía un nombre tan esotérico).

Lo que hará, es cargar una página, ejecutar cualquier JavaScript y aplicar los diferentes estilos de CSS, todo en el frame-buffer del servidor. Entonces puedes guardar la imagen.

Xvfb probablemente no esté disponible en la mayoría de los servicios de alojamiento compartido, sin embargo, si eso no tiene importancia, entonces sería una solución viable.

2

Si bien puede representar HTML utilizando una variedad de herramientas, no puede estar seguro de que esas herramientas representarán el HTML de la misma manera que su navegador lo representa.

Si su objetivo final es generar una imagen con texto en él, a continuación, vamos a resolver ese problema en lugar de tratar de hacer que la solución que sugirió trabajo.

Eche un vistazo a la función imagettftext() de PHP. Contiene un ejemplo # 1 que crea una imagen pequeña y simple de texto que se puede almacenar en cualquier variable ... incluida una variable de formulario.

Al usar este ejemplo y agregar algunos otros de PHP's GD functions, puede hacer una réplica decente de una tabla, y asegurarse de que se vea exactamente como lo desea, en lugar de hacerlo de la forma en que html2ps o alguna otra herramienta lo representa .

<?php 
// Set the content-type 
header('Content-Type: image/png'); 

// Create the image 
$im = imagecreatetruecolor(400, 30); 

// Create some colors 
$white = imagecolorallocate($im, 255, 255, 255); 
$grey = imagecolorallocate($im, 128, 128, 128); 
$black = imagecolorallocate($im, 0, 0, 0); 
imagefilledrectangle($im, 0, 0, 399, 29, $white); 

// The text to draw 
$text = isset($_POST['name']) ? $_POST['name'] : "name"; 
// Replace path by your own font path 
$font = 'arial.ttf'; 

// Add some shadow to the text 
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); 

// Add the text 
imagettftext($im, 20, 0, 10, 20, $black, $font, $text); 

// Using imagepng() results in clearer text compared with imagejpeg() 
imagepng($im); 
imagedestroy($im); 
?> 

Aquí hay un ejemplo de salida generada por el script anterior:

enter image description here

Tenga en cuenta que tendrá que proporcionar arial.ttf según las instrucciones en el enlace anterior.

Si las cosas no funcionan, busque los errores tanto en la pantalla como en el registro de errores de su servidor web PRIMERO, antes de seguir aquí. Es posible que el módulo GD de PHP no esté instalado en su servidor web. Si este es el caso, debe consultar con su administrador del servidor para asegurarse de que lo que necesita esté disponible para usted.

+0

Creo que hacerlo en el lado del servidor es una tarea exagerada para esta tarea, que se puede lograr de una manera mucho más simple con la biblioteca sugerida por @Anber. Ejemplo aquí http://jsfiddle.net/arthurcamara/6phhb5g9 –

+0

@ArthurCamara - Estoy de acuerdo en que este lado del cliente lo convierte en una solución más limpia, pero la pregunta del OP era específicamente sobre cómo generar un PNG dentro de PHP. – ghoti

+0

Creo que su pregunta era sobre generar PNG con la tabla. y "Si no hay una forma de renderizar PHP publicado". Así que PHP fue una segunda opción, como debería ser :) –

2

Puede probar this JS library en el lado del cliente.

+0

Para mí esta es una solución mucho más limpia también. Ejemplo de JSFiddle con la biblioteca sugerida (html2canvas) aquí: https://jsfiddle.net/arthurcamara/6phhb5g9/ –

+0

Esa es una biblioteca útil. También sería genial si esta respuesta [proporcionado contexto] (http://stackoverflow.com/help/how-to-answer) para el enlace, y abordado el requisito establecido en la pregunta: "* Quiero que el usuario a continuación, ser capaz de guardar su "nota" como una imagen con su nombre personalizado en ella. * " – ghoti

+0

De acuerdo con @ghoti :) Más contexto y una respuesta más profunda sería increíble. Una nota con su nombre personalizado en la imagen también es posible con lienzo, por lo que no debería ser un problema encontrar una solución para este lado del cliente. –

Cuestiones relacionadas