|

Laboratorio: creando documentos PDF con Zend Framework

El otro día contábamos cómo eran las clases del framework de Zend para crear documentos PDF, también decíamos que el ejemplo de uso iría otro día, pues aquí vamos a explicar cómo realizar un PDF con una imagen como cabecera y un texto que se indique por un formulario.

También comentaba que según lo visto, el framework de Zend me gustaba bastante, pero debo decir que la documentación está un poco verde y que algunas de las opciones que parecen activadas no lo están (para darme cuenta de esto tuve que indagar por el código fuente).

pdf-ejemplo.png

El crear un PDF parece a primera vista algo sencillo a simple vista (¡qué optimista!), pensaba que sería algo como: crear documento, crear página y ponerte a escribir. Todo bien hasta que tienes que escribir, porque más que escribir tienes que maquetar, decir que texto va en tal lugar, no vale con escribir un párrafo que directamente y que el Acrobat Reader lo coloque como pensamos que debería ir. No, tenemos que ir calculando lo que va a ocupar la línea, y si no se sale de la página, escribirla.

Read More “Laboratorio: creando documentos PDF con Zend Framework”

|

Zend Framework: creando documentos PDF

Avanzando en el framework de Zend, hoy vamos a ver cómo crear documentos PDF. Quizás a muchos no les vaya a ser útil, pero un documento PDF es un formato bastante extendido.

De forma sencilla, ya que la librería del framework es algo extensa, vamos a explicar que métodos son necesarios para crear un PDF.

Para cargar la librería:

require_once 'Zend/Pdf.php';

Para crear un nuevo documento PDF:

$pdf = new Zend_Pdf();

Para crear una nueva página:

$pdf->pages[] = ($page = $pdf->newPage('A4'));
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);

Obtener ancho y alto de la página:

$ancho  = $page->getWidth();
$alto = $page->getHeight();

Usar estilos:

$estilo = new Zend_Pdf_Style();
$estilo->setFillColor(new Zend_Pdf_Color_RGB(0, 0, 0));
$font = Zend_Pdf_Font::fontWithPath('/path/fuente.ttf');
$estilo->setFont($font, 10);
$estilo->setStyle($style);

Escribir texto:

$page->drawText("Hola Mundo", $x, $y);

Insertar imágenes:

$img = Zend_Pdf_ImageFactory::factory('sentidoweb.png');
$page->drawImage($img, $x, $y, $x+&ancho, $y+$alto);

Devolver la salida:

echo $pdf->render();

Eso sí, antes hay que tener en cuenta que tenemos que devolver al inicio del script el Content-Type:

header("Content-Type: application/pdf");
// Si queremos que se devuelva como un fichero adjunto
header("Content-Disposition: attachment; filename=\"prueba.pdf\"");

Si, se que parece muy resumido, pero otro día habrá un ejemplo más completo, mejor ir paso a paso.

Zend Framework : PDF

| |

Zend Framework: uso básico de la base de datos

Algo que siempre se usa que realmente solo se debería crear una vez en nuestras aplicaciones web es el gestor de la base de datos. Y si seguimos con el estudio del framework de Zend, nos encontramos con unas funcionalidades sobre la BD bastante aceptables, aunque ellos mismos digan que deben añadir cosas.

La principal característica es olvidarnos de la BD en cuestión y usarla, sea cual sea, de forma genérica. Por ahora este framework admite entre otras Microsoft SQL Server, MySQL, PostgreSQL y SQLite, estando basado en PDO. Lo siguiente, es que mediante una clase, el uso que normalmente le damos a una base de datos (selección, inserción y borrado) queda perfectamente resuelto.

Read More “Zend Framework: uso básico de la base de datos”

|

Zend Framework: métodos estáticos

Antes de meternos a estudiar los componentes que nos facilita el framework de Zend, es necesario ver los métodos estáticos, los cuales a parte de sernos útiles, también se usan dentro de los distintos componentes.

  • loadFile(): carga cualquier archivo con código php, envuelve a la funcion include(). Tiene 3 parámetros, el nombre del archivo, el directorio dónde se situa, si es NULL buscará solamente en el include_path y un flag para indicar si se usa include o include_once. Si se produce cualquier error lanza una excepción Zend_Exception.
  • loadClass(): carga una clase, la cual se indica como parámetro, a parte se puede decir el directorio donde se encuentra. Si el directorio es null y el nombre de la clase tiene guiones bajos (_), usará los subrayados para localizar los directorios: p.e. Paquete_Componente_Clase lo sustituirá por Paquete/Componente/Clase.php. Si se produce algun error, se lanza una Zend_Exception.
  • loadInterface(): funciona igual que loadClass pero para interfaces.
  • isReadable(): es igual que la función is_readable de PHP pero con la posibilidad de buscar en el include_path.
  • dump(): ejecuta la función var_dump de PHP pero usando etiquetas pre de HTML y seleccionando se si realiza un echo o no.
  • register(): registra un objeto en el espacio de la aplicación, una vez registrado, cuando se recupera, siempre será la misma instancia. Se le debe pasar por parámetro el nombre y la variable.
  • registry(): devuelve una variable del registro cuando se le pasa su nombre por parámetro o una lista de todas las variables del registro cuando se pasa null.
|

Introducción al Zend Framework

zendframework.pngLos creadores de PHP tambien son los autores de uno de los mejores frameworks de PHP (¿hay alguno más?), su filosofía es clara, la ley del mínimo esfuerzo, ¿para qué vas a crearte unas librerías cuando ya existen?.
Este framework está formado por una serie de métodos estáticos y componentes (que usarán estos métodos). Los componentes son varios y variados y aunque alguno es posible que no lo usemos nunca (aplicaicones que tiren de Amazon o de Flickr no es algo que solemos necesitar con frecuencia), hay otras que puede que las usemos hasta la saciedad, por ejemplo el componente para la BD. Entre los componentes que destacaría se encuentran: Zend_Config para temas de configuración de aplicaciones web, Zend_Db para tratar con bases de datos, Zend_Search o Zend_Feed entre otros.
La instalación es sencilla, tan solo tendremos que añadir en el fichero de configuracion php.ini, el path hasta la carpeta library del framework con la instruccion include_path.
En entradas posteriores intentaremos ir presentando cada uno de los componentes.
Zend Framework
Descarga
Manual

| |

Comet paso a paso: pizarra colaborativa para páginas web

Hoy vamos a ver otro ejemplo de Comet, que a los que trabajamos en desarrollo web, nos puede venir muy bien, para cuando queremos testear una aplicación web de forma conjunta y online. También puede ser útil para realizar presentaciones.

Se trata de una pizarra colaborativa, para dibujar sobre páginas web. Cada usuario dibuja sobre el navegador y el resto de los usuarios ven lo que ha dibujado. Nada mejor para entenderlo que el siguiente video.

Se van a usar sobre todo tres cosas: comet, canvas y http://www.php.net/xml, todo sobre Firefox.

Read More “Comet paso a paso: pizarra colaborativa para páginas web”

|

AJAX paso a paso: validar enlaces

En ocasiones en nuestros blogs o páginas ponemos una referencia a otro sitio, que cuando el visitante intenta acceder, se encuentra con que la página ya no está disponible. Vamos a hacer una pequeña función que una vez cargada la página vaya comprobando mediante AJAX si el enlace es correcto y si no lo es, lo modificaremos para que cuando se pulse en él, aparezca un mensaje indicando que ya no es un enlace válido.

Read More “AJAX paso a paso: validar enlaces”

| | |

AJAX paso a paso: autocompletado en cajas de texto

Hace ya tiempo escribí en display: NONE cómo hacer que el texto se autocompletara en una caja de texto según se fuera escribiendo en ella. En esa entrada comentaba que la obtención de los datos, que era mediante Javascript, se podía realizar mediante AJAX. Hoy vamos a explicar cómo se haría esa llamada mediante AJAX.
ajax-autocompletado.png

Read More “AJAX paso a paso: autocompletado en cajas de texto”

|

Ajax paso a paso: el ahorcado

Seguimos con nuestro especial sobre AJAX. Esta vez vamos a intentar dar un ejemplo de interactividad con el usuario y nada mejor para ello que un juego: el ahorcado.
ahoracado.png

La verdad es que los juegos de este tipo ya no se estilan, pero es un ejemplo sencillo que podemos usar para otros casos, por ejemplo formularios, encuestas, … Se trata de que el usuario interactúa sin preocuparse y la aplicación reacciona según lo que haga el usuario.

Read More “Ajax paso a paso: el ahorcado”