Ads 468x60px

Perfil

sábado, 27 de abril de 2013

Generar archivos PDF dinámicamente con PHP

pdf logoLos documentos PDF han demostrado ser un medio muy importante dentro de la ofimática actual. Crear, administrar y exportar archivos PDF suele ser un requerimiento esencial dentro de cualquier proyecto web. Necesitamos una herramienta para
  1. Insertar imágenes y gráficas.
  2. Establecer la fuente del PDF.
  3. Tener dinámicamente control sobre el diseño del mismo.
  4. Realizar una maquetaciĂłn decente para esta clase de documentos es esencial.
De nuestra habilidad para crear estos documentos dependerá la calidad del archivo finalmente exportado. Es por esto que desde este blog os quiero presentar mi herramienta preferida la clase FPDF de PHP.
FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib. La F de FPDF significa Free (gratis y libre): puede usted usarla para cualquier propĂłsito y modificarla a su gusto para satisfacer sus necesidades.
La clase genera documentos en muchos otros idiomas aparte de los europeos occidentales: europeo central, ciríloco, griego, báltico y tailandés, si se dispone de fuentes TrueType o Type1 con el conjunto de caracteres adecuado. El chino y el japonés también están admitidos. UTF-8 también está disponible.
Como es lĂłgico, la velocidad de generaciĂłn de un documento es menor que con PDFlib. Sin embargo, la desventaja en cuanto a rendimiento es muy razonable y se adecĂşa a la mayorĂ­a de los casos, a no ser que sus documentos vayan a ser especialmente complejos o extensos.
He aquí un ejemplo de uso de la clase simple. El desarrollador tiene en su página muchos más ejemplos más aparte de documentación: http://www.fpdf.org/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
require('fpdf.php');
class PDF extends FPDF
{
//Cabecera de página
function Header()
{
    //Logo
    $this->Image('logo_pb.png',10,8,33);
    //Arial bold 15
    $this->SetFont('Arial','B',15);
    //Movernos a la derecha
    $this->Cell(80);
    //TĂ­tulo
    $this->Cell(30,10,'Title',1,0,'C');
    //Salto de lĂ­nea
    $this->Ln(20);
}
//Pie de página
function Footer()
{
    //PosiciĂłn: a 1,5 cm del final
    $this->SetY(-15);
    //Arial italic 8
    $this->SetFont('Arial','I',8);
    //NĂşmero de página
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
//CreaciĂłn del objeto de la clase heredada
$pdf=new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)     $pdf->Cell(0,10,'Imprimiendo lĂ­nea nĂşmero '.$i,0,1);
$pdf->Output();

viernes, 26 de abril de 2013

PHPMailer I – gestiona todos los correos de tu site con esta librerĂ­a



Es posible enviar email con la funcion mail() de php, pero dicha función no permite algunas de las más populares características que proporcionan los clientes de correo usados actualmente. PHPMailer hace fácil la difícil tarea de enviar correos con características especiales y puedes incluso utilizar tu propio servidor smtp aunque éste requiera autenticación (un nombre de usuario y contraseña), con lo que se podrá usar una cuenta gratuita de correo que permita este tipo de conexión.
CaracterĂ­sticas principales:
  • Capacidad de uso de uno o varios servidores SMTP externos
  • Uso de html en el envĂ­o
  • Adjuntar imágenes y/o archivos en el mail
  • Embeber imágenes dentro del correo electrĂłnico
  • Buena descripciĂłn de errores
Descargas:
http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php4/0.90/
Ejemplos de uso:
http://phpmailer.worxware.com/index.php?pg=examples
Página de los desarrolladores:
http://phpmailer.worxware.com/

jueves, 25 de abril de 2013

Patrones de Diseño II – Singleton en PHP

Una breve entrada para describir el patrón de diseño denominado Singleton y para contaros cómo podríamos implementarlo en PHP.
IntenciĂłn del patrĂłn

Garantiza que una clase sĂłlo tenga una instancia y proporciona un punto de acceso global a ella.
Problema a resolver

Varios clientes distintos precisan referenciar a un mismo elemento y queremos asegurarnos de que no hay más de una instancia de ese elemento.
SoluciĂłn -> Singleton

Garantizaremos una Ăşnica instancia.

¿CĂłmo obtengo una instancia de la clase y cĂłmo uso sus mĂ©todos?
.

miércoles, 24 de abril de 2013

Patrones de Diseño I : introducción

1.- ¿QuĂ© son los patrones de diseño?

Voy a hacer un copy-paste de la wikipedia porque creo que yo mismo no encontraré mejores palabras para definirlo :
“Los patrones de diseño son la base para la bĂşsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacciĂłn o interfaces.
Un patrĂłn de diseño es una soluciĂłn a un problema de diseño. Para que una soluciĂłn sea considerada un patrĂłn debe poseer ciertas caracterĂ­sticas. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.”
2.- ¿Para que sirven los patrones de diseño?
Seguro que casi todos vosotros habĂ©is usado el MVC (Modelo Vista Controlador) en más de una ocasiĂłn usando algĂşn Framework o librerĂ­a. ¿Os habĂ©is dado cuenta de los fácil que es programar con este mĂ©todo una web? ¿HabĂ©is observado lo lĂ­mpio que queda el cĂłdigo y lo rápido que se programa? Pues bien el MVC no es más que un patrĂłn de diseño que se adapta perfectamente a la programaciĂłn web.
En general los objetivos de cualquier patrón de diseño los podemos resumir en los siguientes puntos:
  1. Aportar elementos reutilizables en el diseño de sistemas software.
  2. Evitar la repeticiĂłn de bĂşsqueda de soluciones a problemas ya conocidos y ya solucionados anteriormente.
  3. Definir un vocabulario comĂşn entre Analistas-Programadores.
  4. Estandarizar el modo en que se realiza el Análisis estructural de la aplicación.
  5. Facilitar el aprendizaje de las nuevas generaciones de programadores condensando conocimiento ya existente.
3.-  ¿Que importancia tienen?
Saber de patrones de diseño te ayuda a tener un lenguaje común con otros programadores. Cuando te toque modificar un programa, el autor del código seguramente tendrá que explicarte qué fue lo que hizo, cómo funciona su código y por qué hizo cualquier cambio. Se puede demorar horas. Pero esa conversación puede acortarse si te dice, aquí estoy utilizando tal o cual patrón (por ejemplo: el patrón Factory). Serás tú el que ya conozcas los conceptos detrás de esa palabra y sabrás cómo fue diseñado el programa.

martes, 23 de abril de 2013

UML2PHP – GeneraciĂłn automática de aplicaciones PHP

logo UML2PHP
UML2PHP es un servicio online de generaciĂłn de cĂłdigo que combina las mejores ventajas del modelado de sofware con las funcionalidades avanzadas de los frameworks PHP actuales.
En todo momento, la filosofia es maximizar el cĂłdigo generado minimizando el esfuerzo de modelado necesario.
Este servicio online permite utilizar tu herramienta de modelado UML preferida para, a partir de un simple diagrama de clases (olvĂ­date de profiles, anotaciones,…) generar una aplicaciĂłn PHP completamente funcional (con formularios para crear/actualizar/borrar objetos, páginas para listar los datos con paginaciĂłn, ordenaciĂłn y posibilidad de filtros, validaciones de los datos de entrada, mensajes flash para informar al usuario de posibles errores,…) sin escribir una sola lĂ­nia de cĂłdigo PHP.
Más concretamente, el servicio genera un esquema doctrine que puede luego usarse como entrada para, por ejemplo, el framework Symfony PHP para generar de forma totalmente automática todo el código CRUD de la aplicación. El resultado es totalmente customizable (se puede cambiar la template CSS por defecto, modificar el código generado si así se desea, etc).
El servicio se puede probar de forma totalmente gratuita.
Para más informaciĂłn puedes contacta con los autores . Y no olvides que en el portal Modeling Languages puedes encontrar otros servicios de generaciĂłn de cĂłdigo (para SQL, Python,…) y mucha informaciĂłn sobre el desarrollo de software dirigido por modelos (model-driven engineering en inglĂ©s) tanto en inglĂ©s como en español.