lunes, 21 de diciembre de 2009

Crear PDF Personalido con FPDF de PHP

El ejemplo básico de fpdf es el siguiente:
<?php
require(’fpdf.php’);
$pdf=new
FPDF();
$pdf->AddPage();
$pdf->SetFont(’Arial’,'B’,16);
$pdf->Cell(40,10,’¡Hola,
Mundo!’);
$pdf->Output();
?>
Si deseamos cambiar la orientación del papel, tamaño o unidad de medida solo tenemos que indicarlo en los parametros que se pasan al constructor.
FPDF([string orientation [, string unit [, mixed format]]])
Por defecto el constructor tiene los siguientes valores:
FPDF($orientation=’P',$unit=’mm’,$format=’A4′)
Si queremos generar un pdf en forma horizontal con una hoja tamaño legal y con dimensiones en centímetros tendríamos que pasar los siguientes parámetros:
$pdf=new
FPDF(’L',’cm’,'Legal’);

Orientación:
* P o Portrait (normal) por defecto
* L o Landscape (apaisado) Unidad
* pt: punto
* mm: milimetro por defecto
* cm: centimetro
* in: pulgada

Un punto es igual a 1/72 de pulgada, es decir cerca de 0.35 mm (siendo una pulgada 2.54 cm). Esta es una unidad muy común en tipografía; los tamaños de fuentes son expresados en esa unidad.
Formato (texto sensible a minúscula/mayúscula)
* A3
* A4
* A5
* Letter
* Legal
Un formato personalizado en la forma de un array de dos elementos conteniedo el ancho y el alto (expresado en la unidad dada por unit).
La clase tiene por defecto una serie de opciones, pero eso no es una limitante para ampliarlas =) Por ejemplo si quisieramos manejar un tamaño no contemplado en la clase tendremos que agregar la descripción y luego comparar el valor recibido.
La sección es Formato de Página:
//Page
format
if(is_string($format))
{
$format=strtolower($format);
if($format==’letter’)
$format=array(612,792);
elseif($format==’a4′)
$format=array(595.28,841.89);

elseif($format==’mcarta‘)
//media
carta
$format=array(311,396);

$this->fwPt=$format[0];//ancho
del formato de página en puntos
$this->fhPt=$format[1];//alto del
formato de página en puntos
}
Con eso debería bastar para tener otra formato de página, en el caso que se desee pasar un tamaño personalizado, el constructor tendría que alterarse un poco más.
Recibiendo los valores de ancho, alto de la página y válidando el formato con la cadena recibida como en el caso de arriba, asignado al Array los valores de ancho y alto.
FPDF($orientation=’P',$unit=’mm’,$format=’A4′, $wcustom=0, $hcustom=0)
elseif($format==’custom’)
//Personalizado
$format=array($wcustom,$hcustom);
y lo demás es historia je, je.. Por lo tanto el código al inicio del post solo cambiara en una línea:
$pdf=new
FPDF(’P',’cm’,'mcarta’);


P.D.  Obtención de medidas
Pulgada - 2.54 cm
Punto - 1/72 pulgada
Punto - 0.35 mm - 0.03527 7777
(valor tomado en los calculos)
Por defecto es mm
Ejemplo Tamaño Carta medidas w 21.59| h 27.94.
612 x 72 = 44064
792 x
72 = 57024
21.59 / 612 = 0.03527 7777
27.94 / 792 = 0.03527 7777
21.59 / 0.03527 7777 = 612.0000135
27.94 / 0.03527 7777 = 792.0000175
Tomando el valor en mm las medidas aumentan un poco, queda a criterio de cada uno
21.59 / 0.035 = 616.86
27.94 / 0.035 = 798.29
Media Carta
10.79 / 0.03527 7777 = 311 - 310.9606368
13.97 / 0.03527
7777 = 396

No hay comentarios:

Publicar un comentario