Ver índice
Encabezados, pies de página y códigos de barras

        Ocultar índice  

   Índice de contenidos
   Instalación en Windows
   Instalación en Ubuntu
   Servidores seguros
   Páginas dinámicas
   Sintaxis básica
   Operaciones
   Arrays
   Formatos de presentación
   Operadores
   Bucles
   Extraer y ord. información
   Funciones
   Ficheros externos
   Imágenes dinámicas
   Gestión de directorios
   Cookies y sesiones
   Clases y objetos
   Ficheros en formato PDF
   Bases de datos MySQL
   PHP y XML
   PDO - Bases SQLite / MySQL
   MySQL a traves de misqli
   Algo de JavaScript y AJAX


Encabezados y pies de página

Existen dos opciones posibles de incluir encabezados y pies de página en un documento. La primera de ella sería utilizar el método incluido en la propia clase. Los resultados que produce son bastante pobres y limitados. No obstante resumiremos su funcionamiento.

Con carácter general deberemos tener en cuenta lo siguiente:

$objeto->setPrintHeader ( true )
y
$objeto->setPrintFooter ( true )

han de estar configuradas como true (su opción por defecto) para permitir que se visualicen los encabezados y pies de página.

$objeto->setHeaderMargin(numero)

debe tener asignado un valor numérico (la distancia del borde superior de la página al punto donde empezará la inserción de los elementos del encabezado). Caso de no establecerlo tomaría valor cero y el encabezado se situaría con margen cero («a sangre») respecto al borde superior del papel.

$objeto->setFooterMargin(numero)

debería estar establecido ya que con su valor por defecto (cero) empezaría a escribir el pie de página debajo de borde inferior del papel. El número positivo que incluyamos en este método establecerá a que distancia del borde inferior empieza a presentarse el pie de página.

$objeto->setHeaderFont(array(nombre,estilo,tamaño))

permite establecer como elementos del array escalar: el nombre de letra nombre ('times', por ejemplo), el estilo estilo (podría ser algo como 'I' italic) y el tamaño tamaño expresado en las mismas unidades con que se definen las dimensiones de la página.

$objeto->setFooterFont(array(nombre,estilo,tamaño))

Se comporta exactamente igual que el anterior solo que en este caso se establece la tipografía para los pies de página.

$obj->setHeaderData(logo, ancho, titulo, subtitulo)

Mediante este método podremos indicar el nombre de una imagen (logo), el ancho que pretendemos que ocupe esa imagen ancho, una cadena de texto titulo que será el título del encabezado y subtitulo una línea de texto que iría debajo de la anterior.

El pie de página se incluye de forma automática y estará formado número de la página y el número total de páginas del documento separadas por una barra. En ambos casos se dibujaría una raya horizontal delimitadora del encabezado y pie de página que ocupa todo el espacio entre márgenes. Los pies de página se alinearían al margen derecho y los encabezados al margen izquierdo.

ejemplo347.php Ver código fuente

  ¡Cuidado!  

Salvo que hagamos una modificación en el fichero de configuración (o hagamos cambios en el fichero tcpdf.php que contiene la clase), la imagen que incluyamos en el encabezado deberá estar en /images/ dentro del directorio tcpdf.
Para alterar esa ruta sería necesario modificar el fichero de configuración.

Clase extendida para encabezados y pies de página

La configuración «a medida» de encabezados y pies de página requiere la creación de una clase extendida de la clase TCPDF en la que el carácter polimórfico de las clases nos va a permitir redefinir los métodos Header() y Footer() que son los que incluyen los encabezados y los pies de página. Los objetos de la nueva clase extendida utilizarían los métodos incluidos en ella en lugar de los establecidos en la clase padre.

Aquí tienes un ejemplo de aplicación de una clase extendida.

<?php
/*incluimos el fichero con las rutas y los include de las clases necesarias
tal como venimos haciendo el los ejemplos anteriores */
include("tcpdf.inc.php");
/* empezaremos creando una clase extendida de TCPDF
que permitirá reescribir las funciones Header y Footer
incluidas en el constructor de la clase TCPDF.
Estas nuevas funciones sustituiran a las preexistentes */

class ConPies extends TCPDF {
    public function Header() {
        /*ponemos color al texto y a las lineas */
        $this->SetTextColor(0,0,200);
        $this->SetDrawColor(255,0,0);
        /* definimos variables con titulo y subtitulo */
        $titulo="Adios cordera";
        $subtitulo="Leopoldo Alas (Clarin)";
        /* posicionamos el puto de insercion 2mm. debajo
           del borde del papel */
        $this->SetY(2);
        /* escribimos el titulo con la fuente que se establezca
        por el método opcion SetHeaderFont */
        $this->Cell(0, 5,$titulo,0,1,'C');
         /* modificamos tipografia para el subtitulo
          e insertamos este */
        $this->SetFont('helvetica', 'I', 7);
        $this->Cell(0, 2,$subtitulo,0,1,'C');
        /* trazamos un rectangulo sombreado que por sus dimensiones
        ocupará el area de texto de la pagina */
        $this->Rect(15,15,180,267,'F','',array(240,240,240));
        /*trazamos una linea roja debajo del encabezado */
        $this->Line(15,15,195,15); 
        /* insertamos una imagen de fondo con 15% de opacidad */
        $this->SetAlpha(0.15,'Normal');
        $this->Image('./images/cordera2.jpg',55,84,100,104,
                      '','','N','','','C');
        /* recuperamos la opacidad por defecto */
        $this->SetAlpha(1,'Normal');
    }
     public function Footer() {
          /* establecemos el color del texto */
          $this->SetTextColor(0,0,200);
          /* insertamos numero de pagina y total de paginas*/
          $this->Cell(0, 10, 'Pagina '.$this->getAliasNumPage().
                             ' de un total de '.
                             $this-> getAliasNbPages(),
                             0, false, 'C', 0, '', 0, false, 'T', 'M');
          $this->SetDrawColor(255,0,0);
          /* dibujamos una linea roja delimitadora del pie de página */
          $this->Line(15,282,195,282);

    }
}

/* creamos un nuevo objeto usando la clase extendida ConPies */
$MiPDF = new ConPies();
/* definimos margenes de encanbezado y pie de pagina,
   tipos de letra para encabezados y piel */
$MiPDF->setHeaderMargin(2);
$MiPDF->setFooterMargin(15);
 $MiPDF->setHeaderFont(Array('times', '', 14));
$MiPDF->setFooterFont(Array('helvetica', 'I', 10));
/* fijamos el modo de visualizacion, agregamos dos paginas
   y visualizamos el resultado */
$MiPDF->SetDisplayMode('fullpage');
$MiPDF->AddPage();
$MiPDF->AddPage();
$MiPDF->Output();
?>
ejemplo348.php Ver código fuente ejemplo349.php Ver código fuente

Códigos de barras

Códigos de barras lineales

TCPDF dispone de una función que permite incluir códigos de barras en los documentos PDF. El método es el siguiente:

$objeto->write1DBarcode ( codigo, tipo, x, y, ancho, alto, xres, estilo, alineacion)

ValorUtilidad
codigo  Son los dígitos y/o caracteres que van a representarse en formato de código de barras
tipo  Ha de tener como valor una ds estas cadenas:C39, C39+, C39E, C39E+, C93, S25, S25+, I25,I25+, C128A, C128B, EAN2, EAN5, EAN8, EAN13, UPCA, UPCE, MSI, MSI+, POSTNET, PLANET, RMS4CC, KIX, IMB, CODABAR, CODE11, PHARMA, PHARMA2T.
Representan algunos de los múltiples formatos de codificación existentes en la actualidad.
x, y  Son las coordenadas del puntos de inserción de la esquina superior izquierda del rectángulo contenedor del código de barras.
ancho, alto  Son los valores del ancho y el alto del rectángulo contenedor
xres  Es el ancho de la barra más estrecha expresada en las mismas unides con las que se define el tamaño del documento. Por defecto su valor es 0,4 mm.
estilo  Es un array asociativo que puede contener los siguientes elementos:
ElementoValorUtilidad
'border'booleano  Indica si ha de ponerse borde al rectángulo contenedor del código de barras
'padding'numero  Establece la distancia que ha de separar la barras del los márgenes del contenedor. Además de valores numéricos admita la opción 'auto'.
'hpadding'numero  Establece la distancia que ha de separar la barras del los bordes laterales contenedor. Además de valores numéricos admita la opción 'auto'.
'vpadding'numero  Establece la distancia que ha de separar la barras del los bordes superior e inferior del contenedor. Además de valores numéricos admita la opción 'auto'.
'fgcolor'array  Es una array escalar formado por los valores de los componentes de color R, G, B del color que se utilizará para las barras y los textos
'bgcolor'array  Es una array escalar formado por los valores de los componentes de color R, G, B del color que se utilizará rellenar el fondo de rectánulo contenedor
'text'booleano  Cuando se le asigna el valor true se escribirá una cadena de texto con los valores del código de barras
'font'nombre  Permite definir el nombre de la fuente que se utilizará para presentar los textos. Si se omite se utilizará la fuente por defecto.
'fontsize'booleano  Establece el tamaño de la fuente
'label'texto  El valor que se incluya en este elemento se incluirá como texto debajo del código de barras
'stretchtext'numero  Si su valor es cero (0) no se producen modificaciones en la escala de los textos. Si se asigna valor uno (1) forzaría la escala horizontal de los textos si fuera necesario para que cupiera dentro del rectángulo contenedor. Cuando el valor asignado sea dos (2) forzaría la escala horizontal, ampliando o reduciendo, para adaptar el texto al espacio disponible. Si los valores son tres(3) o cuatro (4) el comportamiento sería similar a los anteriores (1 o 2) modificando el espacio entre caracteres en vez de ampliar o reducir el tamaño de los mismos.
'position'L,C,R  Establece la posición del código de barras respecto a su rectángulo contenedor
'align'L,C,R  Posiciona el rectángulo contenedor respecto a los márgenes laterales de la página
'stretch'booleano  Cuando está configurado como true adapta el ancho del código al espacio contenedor. Si su valor es false se usa el ancho de barras establecido por el parámetro xres
'fitwidth'booleano  Si se asigna el valor de true adapta el ancho del rectángulo contenedor al espacio requerido por el código de barras y los márgenes laterales (padding)
'cellfitalign'booleano  Esta opción sólo funciona cuando fitwidth es true y "position no está definido o está vacío. Ajuste la posición horizontal de la celda que contiene código de barras en el interior del rectángulo especificado: L = izquierda, C = centro, R = derecha.
alineacion  Establece la posición del punto de inserción después de haber incluido el código de barras. Admite como valores T, M, B, N que se refieren a las partes: superior derecha, centro derecha,inferior derecha o nueva línea siempre respecto al código de barras actual.
  En este ejemplo pueden verse las diferentes posibilidades de este tipo de códigos de barras.
ejemplo350.php Ver código fuente

Códigos de barras 2D

La clase TCPDF también permite escribir códigos de barras del tipo 2D utilizando el método:

$objeto-> write2DBarcode ( codigo, tipo, x, y, ancho, alto, estilo, alineacion, distorsion )

de gran similitud al descrito anteriormente aunque con algunos elementos diferenciados en lo que se refiere a tipo, estilo y distorsion.

Este formato de códigos admite como tipos alguno de los siguientes: RAW, RAW2, QRCODE,L, QRCODE,M, QRCODE,Q, QRCODE,H, QRCODE,L o PDF417.

Por lo que respecta al estilo se define, igual que en el caso anterior, mediante un array asociativo cuyos elementos son: 'border', 'padding', 'hpadding', 'vpadding', 'fgcolor', 'bgcolor', 'position' con comportamientos idénticos a los descritos en el párrafo anterior y también 'module_height' y 'module_width' que permiten establecer mediante valores numéricos el alto y el ancho (expresado en puntos) de un módulo simple.

El parámetro distorsion es un valor booleano. Cuando se le asigna true puede distorsionar el código de barras para encajarlo con la anchura y la altura. Si el valor es false (valor por defecto) preservar la relación de aspecto.

En el ejemplo siguiente tienes comentadas algunas de las diferentes opciones de esta función.

ejemplo351.php Ver código fuente