Está en la página 1de 63

Manual Mca024

S diferente, intgrate

Mca024

Manual ca024 CURSO IMPLEMENTACION de


FPDF y JPGRAPH en PHP

Fecha: 11 / 06 / 2013

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 1


Manual Mca024

INDICE

Pag. 3 Leccin 1 Introduccin a FPDF

Pag. 4 Leccin 2 Caractersticas de FPDF

Pag. 5 Leccin 3 Clases de fPDF

Pag. 8 Leccin 4 Manejo de encabezado y pie de pgina

Pag. 11 Leccin 5 Saltos de pgina

Pag. 11 Leccin 6 Incluyendo imgenes

Pag. 13 Leccin 7 Manejando colores

Pag. 17 Leccin 8 Mltiples columnas

Pag. 24 Leccin 9 Tablas

Pag. 30 Leccin 10 Texto flotante

Pag. 31 Leccin 11 Manejo de enlaces

Pag. 35 Leccin 12 Uso de fuentes TTF

Pag. 39 Leccin 13 Introduccin a jpgraph

Pag. 41 Leccin 14 Caractersticas de jpgraph

Pag. 44 Leccin 15 Clases jpgraph

Pag. 46 Leccin 16 Tipos de grficos: Lneas, Barras, Tortas y Otros

Pag. 52 Leccin 17 Manejo de escalas en los ejes

Pag. 57 Leccin 18 Manejo de colores

Pag. 58 Leccin 19 gd1 y gd2 en php como soporte

Pag. 59 Leccin 20 Manejo de leyendas y ttulos

Pag. 62 Leccin 21 Uso de fuentes ttf

Pag. 63 Leccin 22 Comparacin tipos de licenciamiento

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 2


Manual Mca024

LECCION 1 Introduccin a FPDF

Fpdf es una librera escrita en el lenguaje de Programacin PHP empleando clases que permite crear archivos en
formato PDF sin ningn requerimiento adicional. Es gratuita, y su licencia permite que sea modificada libremente.

Entre las funcionalidades que ofrece esta biblioteca se encuentran:

Eleccin de la unidad de medida, formato de pgina y mrgenes


Administracin de encabezados y pies de pgina
Salto de pgina automtico
Salto de lnea y justificacin del texto automticos
Inclusin de imgenes (JPEG , PNG y GIF (versin 1.6) )
Colores
Enlaces

Esta librera de clases en PHP est desarrollada bajo el paradigma de programacin orientada objetos, siendo el
Objeto fpdf el encargado de ir almacenando la estructura, y mostrndolo con la funcin Output, teniendo diferentes
salidas tanto por pantalla como por impresora o simplemente ofreciendo la posibilidad descargar el archivo. Fpdf
ofrece la ventaja de permitir crear pdf desde php con un relativa sencillez haciendo de intermediario entre las
funciones elementales de salida de datos que se muestran en el pdf y el usuario, entre sus funciones ms
utilizadas se encuentra Cell que es la base de todo el muestreo, creando celdas las cuales pueden contener texto.
FPDF es una clase desarrollada en PHP para poder realizar documentos en PDF, dinmicamente a partir de scripts
PHP. Esta clase trabaja de manera totalmente autnoma, por lo que no requiere utilizar la librera PDFlib ni
cualquier otro producto similar.

Se trata de una clase ofreciendo bastantes caractersticas de configuracin, ya que es posible modificar la unidad
de medida, el formato de la pgina, los mrgenes, los encabezados y los pies de pgina, los saltos de lnea, las
imgenes, colores, enlaces, etc.

Un detalle importante es que FPDF es una librera gratuita para cualquier uso, tanto comercial como personal (Su
primera "F" inicial significa justamente "Free", osea, libre y gratis), por lo que resultar muy interesante para
cualquier uso.

Instalacin de FPDF

Esta clase requiere al menos PHP 4 o superior. Adems tiene algunas extensiones que pueden resultar tiles.

Despus de esta pequea introduccin vamos a pasar a descargar e instalar las libreras necesarias para su
utilizacin. Para ello nos descargamos la ltima versin de FPDF en el siguiente enlace, en la seccin de descargas.

http://www.fpdf.org/?lang=es

Una vez descargado se sube al servidor y se recomienda colocar en una carpeta como libs/fpdf, para poder ser
incluida en los scripts donde se requiera utilizar.

La instalacin no requiere ningn otro requisito.

Trabajando con FPDF para generar un PDF desde PHP

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 3


Manual Mca024

FPDF se utiliza como cualquier clase de programacin orientada a objetos con PHP, por lo que lo ms importante
ser conocer y dominar sus diferentes mtodos y propiedades. A continuacin se muestra un ejemplo muy sencillo
que no requiere mucha programacin PHP.

El formato general para escribir una pgina en PDF sera el siguiente:

<?php

require('libs/fpdf/fpdf.php');

$pdf=new FPDF();

$pdf->AddPage();

$pdf->SetFont('Arial','B',16);

$pdf->Cell(40,10,'Mi primera pgina pdf con FPDF!');

$pdf->Output();

?>

Si se ejecuta esto directamente aparecer un archivo PDF con el texto colocado.

Analizando todas las lineas escritas:

Lo primero es incluir la librera fpdf.php

En la linea $pdf=new FPDF(); se crear el objeto FPDF. Si no se coloca ningn parmetro en el constructor, el objeto
se crear con los valores por defecto, en este caso seran los siguientes: el tamao de pgina es A4, el formato
vertical y la unidad de medida el milmetro. Si se requieren modificar estos parmetros seria en el siguiente orden
$pdf=new FPDF('formato','unidad de medida','tamao');

En la linea $pfd->AddPage(); se aade una pgina.

Con SetFont(); se le da formato al texto diciendo el tipo de letra, si es en negrita o no, y el tamao de la letra.

En la linea $pdf->Cell(); se empieza a escribir el contenido de la pgina. Se empieza diciendo el ancho de la celda
donde se va a escribir, el alto de la celda, y el contenido de la celda.

La ultima linea $pdf->Output();cierra el archivo y lo enva al navegador. Es importante no poner esta lnea antes
de terminar de escribir el archivo.

LECCION 2 Caractersticas de FPDF

Las principales caractersticas de FPDF se enumeran a continuacin:

Eleccin de la unidad de medida, formato de pgina y mrgenes


Administracin de encabezados y pies de pgina
Salto de pgina automtico
Salto de lnea y justificacin del texto automticos
Admisin de imgenes (JPEG, PNG y GIF)
Colores
Enlaces
Admisin de fuentes TrueType (TTF), Type1 y codificacin
Compresin de pgina

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 4


Manual Mca024

FPDF no necesita de ninguna extensin para PHP (excepto zlib para activar la compresin y GD para soporte a GIF)
y funciona con PHP4 ( 4.3.10) y PHP5.

Qu idiomas se pueden usar?

La clase genera documentos en muchos otros idiomas aparte de los europeos occidentales: europeo central,
cirloco, griego, bltico y tailands, si se dispone de fuentes TrueType o Type1 con el conjunto de caracteres
adecuado. El chino y el japons tambin estn admitidos.

UTF-8 tambin est disponible.

En cuanto a la eficiencia?

La velocidad de generacin de un documento es menor que con PDFlib. Sin embargo, la desventaja en cuanto a
rendimiento es muy razonable y se adeca a la mayora de los casos, a no ser que los documentos vayan a ser
especialmente complejos o extensos.

LECCION 3 Clases de fPDF

La librera solo contiene dos clases, la clase FPDF conteniendo todos los mtodos para la generacin de los
documentos y la clase TTFParser, un utilitario para realizar el parsing de los documentos TTF. Esta leccin se
enfocar en la clase FPDF.

Clase FPDF

Mtodos importantes

FPDF() Constructor

El constructor FPDF()permite crear el documento pdf y darle un formato. Se debe tener en cuenta que los
parmetros que se le pasen se usarn en todos los mtodos. Su sintaxis es la siguiente:

FPDF([string orientacin [, string unidad [, mixed formato]]);

orientacin es la forma de colocacin de la pgina, es decir, debemos indicar si es vertical (Portrait) u horizontal
(Landscape). El valor por defecto P es vertical. El valor para horizontal es L

unidad es la medida de usuario y sus posibles valores son: pt punto, mm milmetro, cm centmetro e in
pulgada. El valor por defecto es el mm

formato de la pgina. Puede tener los siguientes valores: A3, A4, A5, Letter y Legal. El valor por defecto es A4

Un ejemplo sera el siguiente:

$pdf=new FPDF('L','pt','Legal');

AddPage()

Esta funcin aade una pgina nueva al documento pdf. Como parmetros tan solo tiene la orientacin y el
formato, el resto de caractersticas las toma por defecto del constructor.

Su sintaxis es la siguiente:

AddPage([string orientacion[,mixed formato]]);

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 5


Manual Mca024

Los parmetros orientacin y formato son iguales que en FPDF(). Si no se le pasan parmetros utilizar
automticamente los del constructor.

SetFont

Es la funcin que permite establecer el formato de la fuente utilizada en el archivo pdf. Es obligatorio llamar a esta
funcin al inicio de la creacin del archivo ya que sino el documento no sera vlido.

Si se requiere aadir un tipo de fuente no disponible en el standar se debe utilizar la funcin AddFont().

La sintaxis de SetFont es la siguiente:

SetFont(string fuente[, string estilo [, float size]]);

fuente: familia de fuente que pueden ser las estandars (Courier,Helvetica o Arial, Times, Symbol,
ZapfDingbats) o aadir una mediante AddFont();

estilo: estilo de la fuente que puede ser regular (no se indica), negrita B, italica I y subindice U.

size: tamao de la fuente en puntos. Su valor por defecto es 12.

Un ejemplo seria el siguiente:

$pdf->SetFont('Helvetica','I',13);

Cell

Esta funcin imprime una celda donde se imprimir el texto. Tiene bordes opcionales y color de fondo. En esta celda
se puede colocar el texto alineado o centrado.

Su sintaxis es la siguiente:

Cell(float w [, float h [, string texto [, mixed borde [, int ln [, string align [, boolean fill [, mixed link]]]]]]])

w: ancho de la celda. Si se coloca 0 la celda se extiende hasta el margen derecho.

H: alto de la celda.

Texto: el texto a aadir.

Borde: indica si van a ser visibles o no. si es 0 no sern visibles, si es 1 se vern los bordes.

Ln: dice donde se empezara a escribir despus de llamar a esta funcin. Siendo 0 a la derecha, 1 al comienzo de la
siguiente lnea, 2 debajo.

Align: para alinear el texto. L alineado a la izquierda, C centrado y R alineado a la derecha.

Fill: indica si el fondo de la celda va a ir con color o no. los valores son True o False

Un ejemplo sera el siguiente:

$pdf->Cell(10,10,'Estamos viendo',1,1,'C');

Output()

Enva el documento al navegador, a un archivo local o a una cadena. Se puede abrir en un cuadro de dilogo o
prepararlo para una descarga.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 6


Manual Mca024

Su sintaxis es la siguiente:

string Output([string nombre, string destino])

nombre: nombre del archivo, si no se indica lo llama por defecto doc.pdf

destino: destino de envo en el documento. I enva el documento al navegador con la opcin de guardar como...,
D enva el documento al navegador preparado para la descarga, F guarda el documento en un archivo local, S
devuelve el documento como una cadena.

Un ejemplo seria el siguiente:

$fpdf->Output('prueba','I');

A continuacin se resumen todos los mtodos de la clase.

Mtodos de la clase FPDF

FPDF 1.7 Manual de Referencia

AcceptPageBreak - acepta o no un salto de pgina automtico

AddFont - aade una nueva fuente

AddLink - crea una referencia interna

AddPage - aade una nueva pgina

AliasNbPages - define un alias para el nmero de pginas

Cell - imprime una celda

Close - termina el documento

Error - error fatal

Footer - pie de pgina

FPDF - constructor

GetStringWidth - calcula la longitud de la cadena

GetX - obtiene la posicin actual de x

GetY - obtiene la posicin actual de y

Header - cabecera de pgina

Image - imprime una imagen

Line - dibuja un lnea

Link - pone una referencia

Ln - salto de lnea

MultiCell - imprime texto con saltos de lnea

Output - guarda o enva el documento

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 7


Manual Mca024

PageNo - nmero de pgina

Rect - dibuja un rectngulo

SetAuthor - establece el autor del documento

SetAutoPageBreak - establece el modo de salto de pgina automtico

SetCompression - cambia la compresin en activo o inactivo

SetCreator - establece el creador del documento

SetDisplayMode - establece el modo de presentacin

SetDrawColor - establece el color de graficacin

SetFillColor - establece el color de relleno

SetFont - establece la fuente

SetFontSize - establece el tamao de la fuente

SetKeywords - asocia las palabras claves con el documento

SetLeftMargin - establece el margen izquierdo

SetLineWidth - establece el ancho de la lnea

SetLink - establece el enlace de destino

SetMargins - establece los mrgenes

SetRightMargin - establece el margen derecho

SetSubject - establece el tema del documento

SetTextColor - establece el color del texto

SetTitle - establece el ttulo del documento

SetTopMargin - Establece el margen superior

SetX - establece la posicin actual de x

SetXY - establece la posicin actual de x y y

SetY - establece la posicin actual de y

Text - imprime una cadena

Write - imprime el siguiente texto

LECCION 4 Manejo de encabezado y pie de pgina

Para editar el encabezado y el pie de pgina, se requiere crear una clase y heredar la clase FPDF sobrescribiendo
los mtodos Header() y Footer().

Encabezado

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 8


Manual Mca024

En el siguiente ejemplo se crea un encabezado para el documento pdf. Se coloca un logo y una serie de estilos.

El ejemplo del cdigo se muestra a continuacin.

<?php

require('libs/fpdf/fpdf.php');

class PDF extends FPDF

//Encabezado de pgina

function Header()

$this->Image('logo.png',10,8,33);

$this->SetFont('Arial','B',12);

$this->Cell(30,10,'Titulo',1,0,'C');

//Creacin del objeto de la clase heredada

$pdf=new PDF();

$pdf->AddPage();

$pdf->SetFont('Times','',12);

//Aqu se escribe lo que se desea mostrar...

$pdf->Output();

?>

La lnea $this->Image ('logo.png',12,9,30); coloca la imagen pasada como parmetro. En esta mtodo se pasa
como parmetro el archivo donde se encuentra la imagen, la abscisa (eje x) de la esquina superior izquierda,
ordenada (eje y) de la esquina superior izquierda y el ancho de la imagen.

En la siguiente lnea ($this->SetFont('Arial','B',12);) se da formato al texto del encabezado.

La lnea $this->Cell (30,10,'Titulo',1,0,'C'); imprime el Ttulo del documento.

Una vez sobrescrito el mtodo Header slo queda crear el objeto de la clase heredada y realizar el documento pdf.

Pie

Para dar formato al pie se debe realizar la misma operacin que con el encabezado, es decir, sobrescribir el mtodo
Footer. Para ello se realiza la misma operacin anterior. A continuacin se muestra con un ejemplo.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 9


Manual Mca024

<?php

require('fpdf.php');

class PDF extends FPDF

//Pie de pgina

function Footer()

$this->SetY(-10);

$this->SetFont('Arial','I',8);

$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');

//Creacin del objeto de la clase heredada

$pdf=new PDF();

$pdf->AddPage();

$pdf->SetFont('Times','',12);

//Aqu escribimos lo que deseamos mostrar

$pdf->Output();

?>

En el mtodo Footer

La lnea $this->SetY (-15); posiciona el pie a 1,0 cm del final.

La siguiente lnea da el formato del texto del pie.

La ltima lnea del mtodo imprime el nmero de pgina actual. Con un margen que se extiende hasta el margen
de la derecha, un alto de celda de 10 (el formato de medida depende del dado al inicio), un texto similar a esto
Page 2, sin borde, con salto de lnea a la derecha y el texto centrado.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 10


Manual Mca024

LECCION 5 Saltos de pgina

Otra caracterstica interesante de FPDF es el salto automtico de pgina. Tan pronto como una celda cruza el lmite
mximo de la pgina (a 2 cm del final, por defecto), se ejecuta un salto y se recupera la fuente. Los encabezados y
los piee utilizan su propia fuente, el cuerpo del documento continua con el fuente establecido. Este mecanismo
automtico de recuperacin tambin se aplica a los colores y al ancho de lnea. El lmite que fuerza los saltos de
pgina puede establecerse con el mtodo SetAutoPageBreak().

AcceptPageBreak

boolean AcceptPageBreak()

Descripcin

En cualquier momento que un salto de pgina es encontrado, es invocado el mtodo, y el salto es emitido o no
dependiendo del valor retornado. La implementacin por defecto retorna un valor de acuerdo a el modo
seleccionado por SetAutoPageBreak().

Este mtodo es invocado automticamente y no debera ser llamado directamente por la aplicacin.

SetAutoPageBreak

SetAutoPageBreak(boolean auto [, float margin])

Descripcin

Activa o desactiva el modo de salto de pgina automtico. Cuando es habilitado, el segundo parmetro es la
distancia de la parte inferior de la pgina que define al lmite desencadenante. Por defecto, el modo est activado y
el mrgen es 2cm.

Parmetros

auto

Boleano indicando si el modo debera ser activado o desacticado.

margin

Distancia desde la parte inferior de la pgina

LECCION 6 Incluyendo imgenes

Las imgenes, se incluyen empleando el mtodo Image().

Image()

Este mtodo se utiliza para aadir imgenes a los archivos PDF.

Admite los formatos JPEG, PNG y GIF (para este formato se necesita la extensin GD).

El formato de la imagen se puede especificar explcitamente o simplemente ser deducido a partir de la extensin
del archivo.

Se tienen tres opciones en cuanto a la especificacin de tamao de la imagen:

Especificar el ancho y el largo con unidades de medida definidas de manera personalizada


Especificar solo el ancho y el sistema calcular el alto automticamente
No especificar nada, lo que har que se imprima la imagen a 72 puntos por pulgada

Este mtodo adems permite asociar un enlace a la imagen.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 11


Manual Mca024

Por otro lado si se repiten las imgenes, FPDF solo guardar una copia para as bajar el peso del archivo.

Su sintaxis es la siguiente:

Image(string file [, float x [, float y [, float w [, float h [, string type [, mixed link]]]]]])

Donde:

file: nombre del archivo de la imagen.

x: Abscisa de la esquina superior izquierda. Si no se especifica se utilizar la abscisa actual.

y: Ordenada de la esquina superior izquierda. Si no se especifica se utilizar la ordenada actual.

w: Ancho de la imagen en la pgina.

h: Alto de la imagen en la pgina.

type:Formato de la imagen.

link: identificador devuelto por el mtodo AddLink() o la url del enlace.

Un ejemplo sencillo sera el siguiente:

$this->Image('logo.jpg',10,8,22);

En este ejemplo se calculara el alto de la imagen de forma automtica.

Un ejemplo completo lucira as:

<?php

require('/libs/fpdf/fpdf.php');

$pdf=new FPDF();

//Primera pgina

$pdf->AddPage();

$pdf->SetFont('Arial','',15);

$pdf->Cell(40,20);

$pdf->Write(5,'A continuacin mostramos una imagen ');

$pdf->Image('logo.jpg' , 80 ,22, 35 , 38,'JPG', 'http://www.institutogala.com');

$pdf->Output();

?>

Este ejemplo es bastante sencillo y lo nico que hace es mostrar un texto que presenta una imagen que aparecer
debajo centrada.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 12


Manual Mca024

LECCION 7 Manejando colores

En el siguiente ejemplo se toma texto de un archivo y colocarlo en un documento y se muestran dos mtodos
adicionales, uno para mostrar colores y otro para mostrar multiceldas.

<?

require('libs/fpdf/fpdf.php');

class PDF extends FPDF

//Encabezado

function Header()

//Logo

$this->Image("logo.jpg" , 10 ,8, 35 , 38 , "JPG" );

//Arial bold 15

$this->SetFont('Arial','B',15);

//Moverse a la derecha

$this->Cell(80);

//Ttulo

$this->Cell(60,10,'Titulo del archivo',1,0,'C');

//Salto de lnea

$this->Ln(20);

//Pie de pgina

function Footer()

//Posicin: a 1,5 cm del final

$this->SetY(-15);

//Arial italic 8

$this->SetFont('Arial','I',8);

//Nmero de pgina

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 13


Manual Mca024

$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');

function TituloArchivo($num,$label)

$this->SetY(55);

//Arial 12

$this->SetFont('Arial','',12);

//Color de fondo

$this->SetFillColor(200,220,255);

//Ttulo

$this->Cell(0,6,"Archivo $num : $label",0,1,'L',true);

//Salto de lnea

$this->Ln(4);

function CuerpoArchivo($file)

//Leer el archivo

$f=fopen($file,'r');

$txt=fread($f,filesize($file));

fclose($f);

//Times 12

$this->SetFont('Times','',12);

//Imprimir el texto justificado

$this->MultiCell(0,5,$txt);

//Salto de lnea

$this->Ln();

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 14


Manual Mca024

function ImprimirArchivo($num,$title,$file)

$this->AddPage();

$this->TituloArchivo($num,$title);

$this->CuerpoArchivo($file);

$pdf=new PDF();

$title='Muestra un archivo txt';

$pdf->SetTitle($title);

$pdf->SetY(65);

$pdf->ImprimirArchivo(1,'Archivo de prueba ','prueba1.txt');

$pdf->ImprimirArchivo(2,'Otro archivo','prueba2.txt');

$pdf->Output();

?>

La funcin TituloArchivo(),permite especificar el diseo de los ttulos de los archivos a mostrar. Se le pasa un tipo
de letra Arial con un tamao 12, un color de fondo azul utilizando la funcin SetFillColor y colocando el titulo con su
correspondiente formato, utilizando la funcin Cell.

A continuacin se crea la funcin CuerpoArchivo() la cual lee el archivo y lo coloca en el PDF.

Se le pasa como parmetro la ruta del archivo. Con fopen se abre el archivo en modo lectura, despus se lee con
fread() y se almacena en una variable, se cierra el archivo y se le da formato al texto a mostrar en nuestro PDF.

Para finalizar se crea la funcin ImprimirArchivo() que engloba las dos anteriores y hace ms sencillo el cdigo.

Mtodo SetFillColor()

Esta funcin define el color de relleno para celdas y rectngulos rellenos. Se puede expresar dicho color en RGB o
escala de grises

Su sintaxis es la siguiente:

SetFillColor(int r [, int g, int b]);

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 15


Manual Mca024

siendo:

r: si g y b se colocan muestra el rojo sino la escala de gris

g: el verde

b: azul

Mtodo MultiCell()

Este mtodo permite imprimir texto con saltos de lnea. Estos pueden ser automticos o explcito (con el carcter
\n).

Su sintaxis es la siguiente:

MultiCell(float w, float h, string txt [, mixed border [, string align [, boolean fill]]])

Siendo:

w: Ancho de celdas. Si 0, estos se extienden hasta el margen derecho de la pgina.

H : Alto de las celdas.

Txt:Cadena para imprimir.

Border : Indica si los bordes deben ser dibujados alrededor del bloque de la celda. El valor puede ser un nmero:

0: no borde

1: marco

o alguno o todos los siguientes caracteres:

L: izquierda

T: superior

R: derecha

B: inferior

Su valor por defecto es 0.

align : Establece la alineacin de texto.

L: a la izquierda

C: centrado

R: a la derecha

J: justificacin (valor por defecto)

fill : Indica si el fondo de la celda debe ser dibujado (true) o transparente (false). Valor por defecto: false.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 16


Manual Mca024

LECCION 8 Mltiples columnas

Mediante un ejemplo se va a ilustrar como colocar texto en dos columnas.

Lo primero a realizar es crear dos variables e inicializarlas:

<?

require('fpdf/fpdf.php');

class PDF extends FPDF

//Columna actual

var $col=0;

//Ordenada de comienzo de la columna

var $y=0;

A continuacin se aadimos el encabezado y el pie del documento

//Encabezado de pgina

function Header()

//Logo

$this->Image("logo.jpg" , 10 ,8, 35 , 38 , "JPG" );

//Arial bold 15

$this->SetFont('Arial','B',15);

// Se mueve a la derecha

$this->Cell(80);

//Ttulo

$this->Cell(60,10,'Titulo del archivo',1,0,'C');

//Salto de lnea

$this->Ln(20);

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 17


Manual Mca024

//Pie de pgina

function Footer()

//Posicin: a 1,5 cm del final

$this->SetY(-15);

//Arial italic 8

$this->SetFont('Arial','I',8);

//Nmero de pgina

$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');

Ahora se crea una funcin que establezca la posicin de una columna.

function SetCol($col)

//Establecer la posicin de una columna dada

$this->col=$col;

$x=10+$col*75;

$this->SetLeftMargin($x);

$this->SetX($x);

En este caso se asigna a $this->col el valor de la variable col especificada al inicio. A partir de all se crea una
variable $x dando el margen izquierdo de la posicin de dicha columna.

Y a continuacin la funcin realmente interesante ya que es la que realiza el salto de columna o pgina segn la
posicin donde se encuentre.

function AcceptPageBreak()

//Mtodo que acepta o no el salto automtico de pgina

if($this->col<2)

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 18


Manual Mca024

//Ir a la siguiente columna

$this->SetCol($this->col+1);

//Establecer la ordenada al principio

$this->SetY($this->y0);

//Seguir en esta pgina

return false;

else

//Volver a la primera columna

$this->SetCol(0);

//Salto de pgina

return true;

Esta funcin pregunta si se est en cualquiera de las columnas menor que 2, si se est aqu se cambia la variable
para en el siguiente paso ir a la columna siguiente, y se sigue en la misma pgina. Si ya se est en la columna 2 lo
nico que se hace es pasar de pgina y situarse nuevamente en la columna 0.

Ahora se muestra el resto de funciones necesarias para imprimir los textos contenidos en los archivos externos.

function TituloArchivo($num,$label)

$this->SetY(55);

//Arial 12

$this->SetFont('Arial','',12);

//Color de fondo

$this->SetFillColor(200,220,255);

//Ttulo

$this->Cell(0,6,"Archivo $num : $label",0,1,'L',true);

//Salto de lnea

$this->Ln(4);

//Guardar ordenada

$this->y0=$this->GetY();

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 19


Manual Mca024

function CuerpoArchivo($file)

// Se lee el archivo

$f=fopen($file,'r');

$txt=fread($f,filesize($file));

fclose($f);

//Times 12

$this->SetFont('Times','',12);

//Se imprime el texto justificado

$this->MultiCell(60,5,$txt);

//Salto de lnea

$this->Ln();

//Se vuelve a la primera columna

$this->SetCol(0);

function ImprimirArchivo($num,$title,$file)

$this->AddPage();

$this->TituloArchivo($num,$title);

$this->CuerpoArchivo($file);

Despus de esto se crea el archivo con el siguiente cdigo:

$pdf=new PDF();

$title='Mostrar un archivo txt';

$pdf->SetTitle($title);

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 20


Manual Mca024

$pdf->SetY(65);

$pdf->ImprimirArchivo(1,'Archivo de prueba ','prueba1.txt');

$pdf->ImprimirArchivo(2,'Otro archivo','prueba2.txt');

$pdf->Output();

Ahora para terminar se coloca el cdigo completo y el enlace a una pgina aparte donde se puede ver funcionando.

<?

require('libs/fpdf/fpdf.php');

class PDF extends FPDF

//Columna actual

var $col=0;

//Ordenada de comienzo de la columna

var $y=0;

//Encabezado de pgina

function Header()

//Logo

$this->Image("logo.jpg" , 10 ,8, 35 , 38 , "JPG" );

//Arial bold 15

$this->SetFont('Arial','B',15);

//Se mueve a la derecha

$this->Cell(80);

//Ttulo

$this->Cell(60,10,'Titulo del archivo',1,0,'C');

//Salto de lnea

$this->Ln(20);

//Pie de pgina

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 21


Manual Mca024

function Footer()

//Posicin: a 1,5 cm del final

$this->SetY(-15);

//Arial italic 8

$this->SetFont('Arial','I',8);

//Nmero de pgina

$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');

function SetCol($col)

//Establecer la posicin de una columna dada

$this->col=$col;

$x=10+$col*75;

$this->SetLeftMargin($x);

$this->SetX($x);

function AcceptPageBreak()

//Mtodo que acepta o no el salto automtico de pgina

if($this->col<2)

//Ir a la siguiente columna

$this->SetCol($this->col+1);

//Establecer la ordenada al principio

$this->SetY($this->y0);

//Seguir en esta pgina

return false;

else

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 22


Manual Mca024

//Volver a la primera columna

$this->SetCol(0);

//Salto de pgina

return true;

function TituloArchivo($num,$label)

$this->SetY(55);

$this->SetFont('Arial','',12);

$this->SetFillColor(200,220,255);

$this->Cell(0,6,"Archivo $num : $label",0,1,'L',true);

$this->Ln(4);

//Guardar ordenada

$this->y0=$this->GetY();

function CuerpoArchivo($file)

//Leer el archivo

$f=fopen($file,'r');

$txt=fread($f,filesize($file));

fclose($f);

//Times 12

$this->SetFont('Times','',12);

//Imprimir el texto justificado

$this->MultiCell(60,5,$txt);

//Salto de lnea

$this->Ln();

//Volver a la primera columna

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 23


Manual Mca024

$this->SetCol(0);

function ImprimirArchivo($num,$title,$file)

$this->AddPage();

$this->TituloArchivo($num,$title);

$this->CuerpoArchivo($file);

$pdf=new PDF();

$title='Mostrar un archivo txt';

$pdf->SetTitle($title);

$pdf->SetY(65);

$pdf->ImprimirArchivo(1,'Archivo de prueba ','prueba1.txt');

$pdf->ImprimirArchivo(2,'Otro archivo','prueba2.txt');

$pdf->Output();

LECCION 9 Tablas

Se va a mostrar el uso de las tablas, utilizando dos ejemplos.

La primera tabla es muy sencilla, tan slo 2 lneas y el encabezado. Para ello se va a utilizar un arreglo con los
nombres de cada celda, y despus se van a ir rellenando las columnas y las filas con la funcin CELL.

La funcin seria la siguiente:

function TablaBasica($header)

//Encabezado

foreach($header as $col)

$this->Cell(40,7,$col,1);

$this->Ln();

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 24


Manual Mca024

$this->Cell(40,5,"hola",1);

$this->Cell(40,5,"hola2",1);

$this->Cell(40,5,"hola3",1);

$this->Cell(40,5,"hola4",1);

$this->Ln();

$this->Cell(40,5,"linea ",1);

$this->Cell(40,5,"linea 2",1);

$this->Cell(40,5,"linea 3",1);

$this->Cell(40,5,"linea 4",1);

y la llamada a la funcin seria la siguiente:

//Creacin del objeto de la clase heredada

$pdf=new PDF();

//Ttulos de las columnas

$header=array('Columna 1','Columna 2','Columna 3','Columna 4');

$pdf->AliasNbPages();

//Primera pgina

$pdf->AddPage();

$pdf->SetY(65);

//$pdf->AddPage();

$pdf->Tabla Basica($header);

El siguiente ejemplo la tabla es ms complicada se le dan colores a las filas y se van a quitar los bordes inferiores
de cada lnea.

La funcin sera la siguiente:

function TablaColores($header)

//Colores, ancho de lnea y fuente en negrita

$this->SetFillColor(255,0,0);

$this->SetTextColor(255);

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 25


Manual Mca024

$this->SetDrawColor(128,0,0);

$this->SetLineWidth(.3);

$this->SetFont('','B');

//Encabezado

for($i=0;$i<count($header);$i++)

$this->Cell(40,7,$header[$i],1,0,'C',1);

$this->Ln();

//Restauracin de colores y fuentes

$this->SetFillColor(224,235,255);

$this->SetTextColor(0);

$this->SetFont('');

//Datos

$fill=false;

$this->Cell(40,6,"hola",'LR',0,'L',$fill);

$this->Cell(40,6,"hola2",'LR',0,'L',$fill);

$this->Cell(40,6,"hola3",'LR',0,'R',$fill);

$this->Cell(40,6,"hola4",'LR',0,'R',$fill);

$this->Ln();

$fill=true;

$this->Cell(40,6,"col",'LR',0,'L',$fill);

$this->Cell(40,6,"col2",'LR',0,'L',$fill);

$this->Cell(40,6,"col3",'LR',0,'R',$fill);

$this->Cell(40,6,"col4",'LR',0,'R',$fill);

$fill=!$fill;

$this->Ln();

$this->Cell(160,0,'','T');

Se ha establecido el color de relleno de las celdas, el color del texto, el grosor de los bordes y el tipo de letra. A
continuacin se ha creado la primera lnea en rojo y la letra en negrita. Despus se asignan otros colores para el
relleno y la letra y se va rellenando el resto de filas. Se colocan bordes donde se necesitan y se indica si la celda va
rellena o no de color con la variable $fill.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 26


Manual Mca024

Al final se aade el borde de abajo del todo, para ello se utiliza la linea:

$this->Cell(160,0,'','T');

Indicando que la lnea tiene que ser 160 de ancho, 0 de alto y mostrando solo el borde superior.

A continuacin, se muestra el ejemplo completo con las dos tablas:

<?

require('libs/fpdf/fpdf.php');

class PDF extends FPDF

//Encabezado de pgina

function Header()

//Logo

$this->Image("logo.jpg" , 10 ,8, 35 , 38 , "JPG" ,"http://www.institutogala.com");

//Arial bold 15

$this->SetFont('Arial','B',15);

//Moverse a la derecha

$this->Cell(80);

//Ttulo

$this->Cell(60,10,'Titulo del archivo',1,0,'C');

//Salto de lnea

$this->Ln(20);

//Pie de pgina

function Footer()

//Posicin: a 1,5 cm del final

$this->SetY(-15);

//Arial italic 8

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 27


Manual Mca024

$this->SetFont('Arial','I',8);

//Nmero de pgina

$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');

//Tabla simple

function TablaSimple($header)

//Encabezado

foreach($header as $col)

$this->Cell(40,7,$col,1);

$this->Ln();

$this->Cell(40,5,"hola",1);

$this->Cell(40,5,"hola2",1);

$this->Cell(40,5,"hola3",1);

$this->Cell(40,5,"hola4",1);

$this->Ln();

$this->Cell(40,5,"linea ",1);

$this->Cell(40,5,"linea 2",1);

$this->Cell(40,5,"linea 3",1);

$this->Cell(40,5,"linea 4",1);

//Tabla coloreada

function TablaColores($header)

//Colores, ancho de lnea y fuente en negrita

$this->SetFillColor(255,0,0);

$this->SetTextColor(255);

$this->SetDrawColor(128,0,0);

$this->SetLineWidth(.3);

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 28


Manual Mca024

$this->SetFont('','B');

//Encabezado

for($i=0;$i<count($header);$i++)

$this->Cell(40,7,$header[$i],1,0,'C',1);

$this->Ln();

//Restauracin de colores y fuentes

$this->SetFillColor(224,235,255);

$this->SetTextColor(0);

$this->SetFont('');

//Datos

$fill=false;

$this->Cell(40,6,"hola",'LR',0,'L',$fill);

$this->Cell(40,6,"hola2",'LR',0,'L',$fill);

$this->Cell(40,6,"hola3",'LR',0,'R',$fill);

$this->Cell(40,6,"hola4",'LR',0,'R',$fill);

$this->Ln();

$fill=!$fill;

$this->Cell(40,6,"col",'LR',0,'L',$fill);

$this->Cell(40,6,"col2",'LR',0,'L',$fill);

$this->Cell(40,6,"col3",'LR',0,'R',$fill);

$this->Cell(40,6,"col4",'LR',0,'R',$fill);

$fill=true;

$this->Ln();

$this->Cell(160,0,'','T');

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 29


Manual Mca024

$pdf=new PDF();

//Ttulos de las columnas

$header=array('Columna 1','Columna 2','Columna 3','Columna 4');

$pdf->AliasNbPages();

//Primera pgina

$pdf->AddPage();

$pdf->SetY(65);

//$pdf->AddPage();

$pdf->TablaSimple($header);

//Segunda pgina

$pdf->AddPage();

$pdf->SetY(65);

$pdf->TablaColores($header);

$pdf->Output();

?>

LECCION 10 Texto flotante

El texto flotante en FPDF se implementa con el mtodo Write.

Write

Write(float h, string txt [, mixed link])

Descripcin

Este mtodo imprime el texto desde la posicin actual. Cuando el margen derecho es alcanzado (o el carcter \n es
alcanzado) se produce un salto de lnea y el texto contina desde el margen izquierdo. Una vez el mtodo termine,
la posicin actual es dejada justo al final del texto.

Es posible poner una referencia sobre el texto.

Parmetros :

Alto de lnea.

txt

Cadena a ser impresa.

link

URL o identificador regresado por AddLink().

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 30


Manual Mca024

Ejemplo

// Comienza con fuente regular

$pdf->SetFont('Arial','',14);

$pdf->Write(5,'Visit ');

// Coloca un enlace subrayado

$pdf->SetTextColor(0,0,255);

$pdf->SetFont('','U');

$pdf->Write(5,'www.fpdf.org','http://www.fpdf.org');

LECCION 11 Manejo de enlaces

Existen tres mtodos que permiten crear enlaces internos y externos en los documentos pdf.

AddLink

Esta funcin permite crear un identificador que ms tarde se utilizar para crear un enlace interno a la pgina.

Su sintaxis es bastante sencilla ya que no requiere que se le pase ningn parmetro.

int AddLink()

El identificador resultante puede ser pasado a los mtodos Cell(), Write(), Image() o Link(). El destino se define
con SetLink().

SetLink

Define la posicin y la pagina a la que un enlace hace referencia.

Su sintaxis es la siguiente:

SetLink(int link [, float y [, int page]])

Donde:

link: identificador obtenido mediante AddLink()

y: posicin donde se encuentra la seccin a la que hace referencia el enlace. El valor por defecto es 0 y se sita en
la parte superior de la pgina.

page: el nmero de la pgina a la que lleva el enlace.

Se debe tener en cuenta que esto es para enlaces internos dentro del documento.

A continuacin se muestra un ejemplo que crea dos pginas con un logo(con enlace externo) en el encabezado y
un enlace interno.

<?php

require('/libs/fpdf/fpdf.php');

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 31


Manual Mca024

class PDF extends FPDF

//Cabecera de pgina

function Header()

//Logo

$this->Image("logo.jpg" , 10 ,8, 35 , 38 , "JPG" ,"http://www.institutogala.com");

//Arial bold 15

$this->SetFont('Arial','B',15);

//Mover a la derecha

$this->Cell(80);

//Ttulo

$this->Cell(60,10,'Titulo del archivo',1,0,'C');

//Salto de lnea

$this->Ln(20)

//Pie de pgina

function Footer()

//Posicin: a 1,5 cm del final

$this->SetY(-15);

//Arial italic 8

$this->SetFont('Arial','I',8);

//Nmero de pgina

$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');

//Creacin del objeto de la clase heredada

$pdf=new PDF();

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 32


Manual Mca024

$pdf->AliasNbPages();

//Primera pgina

$pdf->AddPage();

$pdf->SetFont('Arial','',15);

$pdf->Cell(40,20);

$pdf->Write(5,'Para ir a la pgina 2, pulse ');

$pdf->SetFont('','U');

$link=$pdf->AddLink();

$pdf->Write(5,'aqu',$link);

$pdf->SetFont('');

//Segunda pgina

$pdf->AddPage();

$pdf->SetLink($link);

$pdf->Output();

?>

Link

La funcin link() se utiliza generalmente para colocar un enlace en una parte concreta de una imagen, se puede
seleccionar el rea concreta de accin de dicho link. Hay que tener en cuenta que siempre ser un rectngulo.

Su sintaxis es la siguiente:

Link(float x, float y, float w, float h, mixed link)

Donde:

x: Abscisa de la esquina superior izquierda.

y: Ordenada de la esquina superior izquierda.

w: Ancho del rectngulo

h: alto del rectngulo

link: Url o identificador devuelto por AddLink().

Se podra poner un enlace dentro de una imagen de la siguiente forma:

<?

require('/libs/fpdf/fpdf.php');

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 33


Manual Mca024

class PDF extends FPDF

// Encabezado de pgina

function Header()

//Logo

$this->Image("logo.jpg" , 10 ,8, 35 , 38 , "JPG" );

//Arial bold 15

$this->SetFont('Arial','B',15);

//Moverse a la derecha

$this->Cell(80);

//Ttulo

$this->Cell(60,10,'Titulo del archivo',1,0,'C');

//Salto de lnea

$this->Ln(20);

//Pie de pgina

function Footer()

//Posicin: a 1,5 cm del final

$this->SetY(-15);

//Arial italic 8

$this->SetFont('Arial','I',8);

//Nmero de pgina

$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');

//Creacin del objeto de la clase heredada

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 34


Manual Mca024

$pdf=new PDF();

$pdf->AliasNbPages();

//Primera pgina

$pdf->AddPage();

$pdf->SetFont('Arial','',15);

$pdf->Link(10,8,10,10,"http://www.institutogala.com");

$pdf->Output();

?>

LECCION 12 Uso de fuentes TTF

En FPDF se pueden usar fuentes TrueType, OpenType y Type1 para no estar limitado a las fuentes incorporadas en
FPDF. El otro punto de inters es que se puede elegir la codificacin de la fuente, permitiendo trabajar con otros
idiomas aparte de los europeos occidentales (ya que las fuentes estndar tienen muy pocos caracteres
disponibles).

Nota: para OpenType, slo es compatible el formato basado en TrueType (no as el basado en el Type1).

Existen dos formas de usar una nueva fuente: incluirla en el PDF o no. Cuando una fuente no se incluye, se busca
en el sistema. La ventaja es que el archivo PDF es ms pequeo; sin embargo, si la fuente no est disponible en el
sistema, se usa otra como sustituta. As que es aconsejable asegurar que la fuente en cuestin est instalada en
los sistemas de los clientes. Si el archivo est destinado a una audiencia numerosa, es mejor incluir la fuente.

Aadir una nueva fuente requiere dos pasos:

Generacin del archivo de definicin de la fuente


Declaracin del fuente en el script

Para Type1, es necesario el archivo AFM correspondiente. Por lo general, ste es provisto con la fuente.

Paso 1. Generacin del archivo de definicin de la fuente

El primer paso consiste en generar un archivo PHP que contenga toda la informacin que necesita FPDF; adems,
el archivo de la fuente deber comprimirse. Para hacer esto, se distribuye un script auxiliar en el directorio
makefont del paquete: makefont.php. Contiene la siguiente funcin:

MakeFont(string fontfile, [, string enc [, boolean embed]])

fontfile

Ubicacin del archivo .ttf, .otf o .pfb.

enc

Nombre de la codificacin. Valor por defecto: cp1252.

embed

Si se incorpora o no la fuente. Valor por defecto: true.

El primer parmetro es el nombre del archivo de la fuente. La extensin debe ser .ttf, .otf o .pfb y determina el tipo
de fuente. Si tiene una fuente Type1 en formato ASCII (.pfa), se puede convertir a formato binario (.pfb) con
t1utils.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 35


Manual Mca024

Para las fuentes Type1, el archivo .afm correspondiente debe estar presente en el mismo directorio.

La codificacin define la asociacin entre un cdigo (de 0 a 255) y un carcter. Los primeros 123 son fijos y se
corresponden con los caracteres ASCII; los siguientes son variables. Las codificaciones se almacenan en archivos
.map. Estn disponibles:

cp1250 (Europa Central)

cp1251 (cirlico)

cp1252 (Europa Occidental)

cp1253 (griego)

cp1254 (turco)

cp1255 (hebreo)

cp1257 (bltico)

cp1258 (vietnamita)

cp874 (tailands)

ISO-8859-1 (Europa Occidental)

ISO-8859-2 (Europa Central)

ISO-8859-4 (bltico)

ISO-8859-5 (cirlico)

ISO-8859-7 (griego)

ISO-8859-9 (turco)

ISO-8859-11 (tailands)

ISO-8859-15 (Europa Occidental)

ISO-8859-16 (Europa Central)

KOI8-R (ruso)

KOI8-U (ucraniano)

Por supuesto, la fuente debe contener los caracteres adecuados a la codificacin escogida.

Nota: las fuentes estndar usan cp1252.

Despus de llamar a la funcin (se puede crear un nuevo archivo e incluir makefont.php), se crear un archivo
.php con el mismo nombre que la fuente. Se puede renombrar si se desea. En caso de incluir la fuente, el archivo
se comprime y da lugar a un segundo archivo con extensin .z (excepto si la funcin de compresin no est
disponible, puesto que requiere la biblioteca Zlib para PHP). Tambin se puede renombra, pero, en este caso, se
tendr que modificar la variable $file en el archivo .php consecuentemente.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 36


Manual Mca024

Ejemplo:

<?php

require('makefont/makefont.php');

MakeFont('c:\\Windows\\Fonts\\comic.ttf','cp1252');

?>

que devuelve los archivos comic.php y comic.z.

Entonces se copian los archivos generados en el directorio de fuentes. Si el archivo de la fuente no pudo ser
comprimido, se copia la fuente en lugar del .z.

Otra forma de invocar a MakeFont() es a travs de la lnea de comandos:

php makefont\makefont.php c:\Windows\Fonts\comic.ttf cp1252

Por ltimo, para las fuentes TrueType y OpenType, tambin se puede generar los archivos en lnea en lugar de
hacerlo manualmente.

Paso 2 Declaracin de la fuente en el script

El segundo paso es el ms simple. Slo se necesita llamar al mtodo AddFont():

$pdf->AddFont('Comic','','comic.php');

Y la fuente queda disponible (en los estilos normal y subrayado), lista para usar como las otras. Si se hubiera
trabajado con la Comic Sans MS Bold (comicbd.ttf), se hubiese escrito:

$pdf->AddFont('Comic','B','comicbd.php');

Ejemplo

A continuacin se muestra un ejemplo completo. Se va a utilizar la fuente Calligrapher. El primer paso es la


generacin de los archivos de la fuente:

<?php

require('makefont/makefont.php');

MakeFont('calligra.ttf','cp1252');

?>

El script devolver el siguiente informe:

Warning: character Euro is missing

Warning: character zcaron is missing

Font file compressed: calligra.z

Font definition file generated: calligra.php

El carcter del euro no est en la fuente (es muy antigua). Otro carcter tampoco se encuentra en la fuente.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 37


Manual Mca024

Alternativamente, se podra haber utilizado la lnea de comandos:

php makefont\makefont.php calligra.ttf cp1252

o haber usado el generado en lnea.

Se pueden copiar estos dos archivos en el directorio de fuentes (font) y escribir el script:

<?php

require('fpdf.php');

$pdf = new FPDF();

$pdf->AddFont('Calligrapher','','calligra.php');

$pdf->AddPage();

$pdf->SetFont('Calligrapher','',35);

$pdf->Write(10,'Enjoy new fonts with FPDF!');

$pdf->Output();

?>

Acerca del smbolo del euro

El carcter del euro no aparece en todas las codificaciones, y no siempre est en la misma posicin:

Codificacin Posicin

cp1250 128

cp1251 136

cp1252 128

cp1253 128

cp1254 128

cp1255 128

cp1257 128

cp1258 128

cp874 128

ISO-8859-1 ausente

ISO-8859-2 ausente

ISO-8859-4 ausente

ISO-8859-5 ausente

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 38


Manual Mca024

ISO-8859-7 ausente

ISO-8859-9 ausente

ISO-8859-11 ausente

ISO-8859-15 164

ISO-8859-16 164

KOI8-R ausente

KOI8-U ausente

La codificacin ISO-8859-1 est muy extendida, pero no incluye el smbolo del euro. Si se necesita, la solucin ms
simple consiste en usar cp1252 o ISO-8859-15, que son prcticamente iguales pero contienen el preciado smbolo.

Reduciendo el tamao de las fuentes TrueType

Los archivos de fuentes son con frecuencia bastante voluminosos; esto se debe a que contienen los caracteres
correspondientes a muchas codificaciones. La compresin Zlib los reduce, pero continan siendo bastante grandes.
Existe una tcnica para reducirlos an ms. Consiste en convertir la fuente a formato Type1 con ttf2pt1
especificando la codificacin requerida; todos los dems caracteres sern omitidos.

Por ejemplo, la fuente arial.ttf que viene con Windows Vista tiene un tamao de 748 KB (contiene 3381
caracteres). Despus de comprimirla, pesa 411 KB. Convirtindose a Type1 manteniendo slo los caracteres
cp1250:

ttf2pt1 -b -L cp1250.map c:\Windows\Fonts\arial.ttf arial

Los archivos .map estn en el directorio makefont del paquete. El proceso devuelve arial.pfn y arial.afm. El archivo
arial.pfb ocupa slo 57 KB, 53 KB despus de comprimirlo.

Es incluso posible ir ms all. Si slo se est interesado en un subconjunto de la codificacin (es probable no
necesitar los 217 caracteres), se puede abrir el archivo .map y quitar las lneas que no interesen.
Consecuentemente, el tamao del archivo disminuir.

LECCION 13 Introduccin a jpgraph

jpGraph es una librera orientada por objetos para la creacin de grficos en PHP. Se debe tener instalado una
versin de PHP 5.1 o superior (es lo recomendado aunque puede trabajar con PHP 4). No es necesario utilizar
ninguna extensin, la librera se encuentra completamente escrita en PHP y lista para ser utilizada en los scripts
PHP (todas las versions de PHP se encuentran soportadas CGI/APXS/CLI.

Qu es JpGraph?

JpGraph es una librera para producir grficos en 2D para PHP5 (aunque existe una versin para PHP 4). El objetivo
es simplificar la creacin de los grficos a travs de cdigo en PHP. La librera puede usarse por si sola o formar
parte de un proyecto de desarrollo WEB. Con esta libre ra tambin es posible crear grficos desde la lnea de
comandos en PHP (versin cli).

Versiones de la librera:

"1.x.y"

Diseada para PHP4 y no es compatible con PHP5 ejecutndose en modo estricto. Debe ser utilizada en
instalaciones antiguas con soporte PHP4. Tambin debe ser utilizada si la librera GD instalada en el servidor de
PHP es la GD 1.x (la librera GD contiene las funciones grficas de bajo nivel en PHP).

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 39


Manual Mca024

"3.x.y"

Es la version actual y diseada para trabajar en PHP5. El cdigo se encuentra optimizada para tanto PHP5 como
para la librera GD 2.x.

"3.x.y-p" (versin profesional)

Es la version 3.x.y con las caractersticas no disponibles en la version libre. Incluye tipos adicionales de grficos
como cdigos de barra 1D y 2D.

Propsito y Uso

El objetivo es disponer de una capa de abstracin de la librera GD permitiendo crear grficos en PHP con una
librera de clases ofreciendo programacin de alto nivel.

Ejemplo

<?php // content="text/plain; charset=utf-8"

require_once ('jpgraph/jpgraph.php');

require_once ('jpgraph/jpgraph_line.php');

// Datos

$ydata = array(11,3,8,12,5,1,9,13,5,7);

// Crear el grfico

$graph = new Graph(350,250);

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 40


Manual Mca024

$graph->SetScale('textlin');

// Crear la lnea a mostrar

$lineplot=new LinePlot($ydata);

$lineplot->SetColor('blue');

// Agregar la lnea al grfico

$graph->Add($lineplot);

// Desplegar el grfico

$graph->Stroke();

?>

El resultado producido es:

Pre-requisitos para utilizar la librera

PHP5
La extensin GD 2.x instalanda

LECCION 14 Caractersticas de jpgraph

Entre las caractersticas principales se puede mencionar:

18 tipos de grficos base cada uno de ellos con mltiples variaciones


Bien documentada un manual de referencia de ms de 700 pginas
Totalmente escrita en PHP capacidad de multi plataforma
Diseo orientado por objetos limpio, facilitando el uso del API

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 41


Manual Mca024

Caractersticas de la librera

Formatos de imgenes PNG, GIF, JPG


Escalas flexibles text-lin, text-log, lin-lin, lin-log, log-lin ,log-log y enteras
Cache de los grficos generados.
Modo batch para generar imgenes en archivos
Mapas de imgenes en los clientes, permitiendo drill down.
Auto escala.
Escala manual con gran control a nivel de ticks.
Mltiples ejes Y y escalas en el mismo grfico
Imagenes en el fondo del grfico
Varios tipos de plots, line-plots, filled line-plots, accumulated line-plots, bar plots, accumulated bar plots,
grouped bar plots, error plots, line error plots, scatter plots, gantt-charts, radar plots, 2D and 3D pie
charts.
Nmero ilimitado de plots en un grfico
Diseo orientado por objetos permitiendo extender la librera creando nuevos plots
Generacin automtica de leyendas
Rejillas en los ejes horizontales y verticales
Rotacin de los grficos lineales
Ms de 400 colores con nombre
Diseo modular, solo se incluyen las clases necesarias
Cdigos de barras 1D (EAN-128, ...)
Plots rosa de los vientos (brjulas)
Pies de pginas y ttulos
Colores alpha blending
Interpolacin con splines cbicos
Estilos de llenado de los plots
Efectos 3D
Marcadores con imgenes
Clculo de regresin lineal
Texto en grficos
Control de errores
Incorpora las banderas de 200 pases las cuales pueden usar como marcadores.
Conjuntos de carecteres en Chino y Japons
Fuentes TTF
Plots de contornos en 2D y 3D
Ilimitado nmero de puntos de datos

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 42


Manual Mca024

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 43


Manual Mca024

LECCION 15 Clases jpgraph

La librera tiene ms de 100 clases , a continuacin se indican las primeras 30. La documentacin completa se
encuentra en http://jpgraph.net/download/manuals/classref/index.html

CLASE DESCRIPCIN

1. AccBarPlot Accumulated Bar plot

2. AccLinePLot Accumulated Line plot

3. AntiSpam AntiSpam de Lineas

4. AxisPrototype Representa el eje X o el eje Y

5. BarPlot Estndar plot de barras vertical

6. Bezier Interpolacin Bezier de un grupo de puntos

7. BoxPlot Crea un Box Plot

8. CanvasGraph Uso de un lienzo

9. CanvasRectangleText Dibuja Texto en un canvas

10. CanvasScale Operaciones de escala en un lienzo

11. ColorFactory Obtiene los colores

12. Contour Crea un contorno

13. ContourPlot Un Plot de contorno

14. DateLocale Usada por los diagramas de Gannt para trabajar con las fechas localizadas

15. DateScale Crea un eje X con una escala de tiempo

16. DateScaleUnits

17. DigitalLED74 Muestra un LED digital

18. DisplayValue Valores a desplegar en un grfico

19. ErrMsgText Trabajar con mensajes de errores

20. ErrorLinePlot Plot Lnea de Errores

21. ErrorPlot Plot de Errores

22. FieldArrow Flecha en un Plot de Campo

23. FieldPlot Plot de Campo

24. Footer Pie de pgina de los grficos

25. FuncGenerator Utilitario para generar los plots de funciones

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 44


Manual Mca024

26. GanttActivityInfo Actividades de un diagrama de gantt

27. GanttBar Barra de actividades

28. GanttGraph Grfico de Gantt

29. GanttPlotObject Plot de Gantt

30. GanttScale Escala de Gannt

Distribucin de los fuentes

Todos los archivos php ofreciendo las clases de graficacin inician con el prefijo jpgraph_ ; por ejemplo los plots de
lneas se encuentran en el archivo jpgraph_line.php.

El contenido del archivo comienza con

<?php
/*======================================================================
=
// File: JPGRAPH_LINE.PHP
// Description: Line plot extension for JpGraph
// Created: 2001-01-08
// Ver: $Id: jpgraph_line.php 1921 2009-12-11 11:46:39Z ljp $
//
// Copyright (c) Asial Corporation. All rights reserved.

//======================================================================
==
*/

require_once ('jpgraph_plotmark.inc.php');

// constants for the (filled) area


DEFINE("LP_AREA_FILLED", true);
DEFINE("LP_AREA_NOT_FILLED", false);
DEFINE("LP_AREA_BORDER",false);
DEFINE("LP_AREA_NO_BORDER",true);

//===================================================
// CLASS LinePlot
// Description:
//===================================================
class LinePlot extends Plot{
..

La clase principal para el manejo de los grficos se encuentra en el archivo jpgraph.php y es la clase Graph.

//===================================================
// CLASS Graph
// Description: Main class to handle graphs
//===================================================
class Graph {
.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 45


Manual Mca024

Pasos para crear un grfico en jpgraph

1. Crear el objeto de la clase Graph


$graph = new Graph(450,300);
2. Configurar los parmetros del objeto Graph, no todos son requeridos
$graph->SetBackgroundImage("tiger_bkg.png",BGIMG_FILLFRAME);
$graph->SetShadow();
$graph->SetScale("textlin");
$graph->title->Set("Ejemplo Plot de Linea");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->img->SetMargin(40,140,40,80);
$graph->legend->Pos(0.05,0.5,"right","center");
$graph->xaxis->SetTextTickInterval(6);
$graph->xaxis->SetTextLabelInterval(2);
$graph->xaxis->SetTickLabels($databarx);
$graph->xaxis->SetLabelAngle(90);
3. Crear los plots a mostrar en el grfico
$p1 = new LinePlot($datos); // datos es un arreglo
$p1->SetColor("red");
$p1->SetLegend("Datos");
4. Asociar el Plot al grfico
$graph->Add($p1);
5. Realizar el despliegue del grfico
$graph->Stroke();

LECCION 16 Tipos de grficos: Lneas, Barras, Tortas y Otros

En esta leccin se mostrarn los grficos generados con su cdigo fuente en php respectivo de modo de ilustrar los
tipos de grficos con ejemplos en cdigo PHP.

Lneas

<?php // content="text/plain; charset=utf-8"


require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_line.php');

// Llenar los datos a mostart


$datay1 = array(20,15,23,15);
$datay2 = array(12,9,42,8);

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 46


Manual Mca024

$datay3 = array(5,17,32,24);

// Parametrizar el grfico
$graph = new Graph(300,250);
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;

$graph->SetTheme($theme_class);
$graph->img->SetAntiAliasing(false);
$graph->title->Set('Filled Y-grid');
$graph->SetBox(false);

$graph->img->SetAntiAliasing();

$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

$graph->xgrid->Show();
$graph->xgrid->SetLineStyle("solid");
$graph->xaxis->SetTickLabels(array('A','B','C','D'));
$graph->xgrid->SetColor('#E3E3E3');

// Crear el plot de lnea 1


$p1 = new LinePlot($datay1);
$graph->Add($p1);
$p1->SetColor("#6495ED");
$p1->SetLegend('Line 1');

// Crear el plot de lnea 2


$p2 = new LinePlot($datay2);
$graph->Add($p2);
$p2->SetColor("#B22222");
$p2->SetLegend('Line 2');

// Crear el plot de lnea 3


$p3 = new LinePlot($datay3);
$graph->Add($p3);
$p3->SetColor("#FF1493");
$p3->SetLegend('Line 3');

$graph->legend->SetFrameWeight(1);

// Output line
$graph->Stroke();

?>

Barras

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 47


Manual Mca024

<?php // content="text/plain; charset=utf-8"


require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_bar.php');

$data1y=array(47,80,40,116);
$data2y=array(61,30,82,105);
$data3y=array(115,50,70,93);

// Crear el grfico. Estas dos llamadas son siempre requeridas


$graph = new Graph(350,200,'auto');
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;
$graph->SetTheme($theme_class);

$graph->yaxis->SetTickPositions(array(0,30,60,90,120,150), array(15,45,75,105,135));
$graph->SetBox(false);

$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array('A','B','C','D'));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

// Crear los plots de barra


$b1plot = new BarPlot($data1y);
$b2plot = new BarPlot($data2y);
$b3plot = new BarPlot($data3y);

// Crear el grupo de barras agrupados


$gbplot = new GroupBarPlot(array($b1plot,$b2plot,$b3plot));
// agregar al grfico
$graph->Add($gbplot);

$b1plot->SetColor("white");
$b1plot->SetFillColor("#cc1111");

$b2plot->SetColor("white");
$b2plot->SetFillColor("#11cccc");

$b3plot->SetColor("white");
$b3plot->SetFillColor("#1111cc");

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 48


Manual Mca024

$graph->title->Set("Bar Plots");

// Desplegar el grfico
$graph->Stroke();
?>

Tortas

<?php // content="text/plain; charset=utf-8"


require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_pie.php');
// datos
$data = array(40,21,17,14,23);

// Crear el grfico de torta


$graph = new PieGraph(350,250);

$theme_class="DefaultTheme";
//$graph->SetTheme(new $theme_class());

// Ttulo
$graph->title->Set("A Simple Pie Plot");
$graph->SetBox(true);

// Crer el plot y agregar al grfico


$p1 = new PiePlot($data);
$graph->Add($p1);

$p1->ShowBorder();
$p1->SetColor('black');
$p1->SetSliceColors(array('#1E90FF','#2E8B57','#ADFF2F','#DC143C','#BA55D3'));
$graph->Stroke();

?>

Otros

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 49


Manual Mca024

Ejemplo de plot stock

<?php // content="text/plain; charset=utf-8"


// Ejemplo de un plot stock
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_stock.php');

// Los datos deben estar en el format : open,close,min,max,median


$datay = array(
34,42,27,45,36,
55,25,14,59,40,
15,40,12,47,23,
62,38,25,65,57,
38,49,32,64,45);

// Parametrizando el grafico
$graph = new Graph(300,200);
$graph->SetScale('textlin');
$graph->SetMarginColor('lightblue');
$graph->title->Set('Box Stock chart example');

// Crear el plot
$p1 = new BoxPlot($datay);

// Ancho de la barra (en pixelss)


$p1->SetWidth(9);

//$p1->HideEndLines();

// Agregar el plot al grafico y enviarlo al navegador


$graph->Add($p1);
$graph->Stroke();

?>

Ejemplo de un contour

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 50


Manual Mca024

<?php // content="text/plain; charset=utf-8"


// Ejemplo de un plot Contour

require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_contour.php');

$data = array(
array (0.5,1.1,1.5,1,2.0,3,3,2,1,0.1),
array (1.0,1.5,3.0,5,6.0,2,1,1.2,1,4),
array (0.9,2.0,2.1,3,6.0,7,3,2,1,1.4),
array (1.0,1.5,3.0,4,6.0,5,2,1.5,1,2),
array (0.8,2.0,3.0,3,4.0,4,3,2.4,2,3),
array (0.6,1.1,1.5,1,4.0,3.5,3,2,3,4),
array (1.0,1.5,3.0,5,6.0,2,1,1.2,2.7,4),
array (0.8,2.0,3.0,3,5.5,6,3,2,1,1.4),
array (1.0,1.5,3.0,4,6.0,5,2,1,0.5,0.2));

// Se parametriza el grafico con un borde suficiente para colocar la leyenda

$graph = new Graph(500,380);


$graph->SetMargin(40,140,60,40);

$graph->title->Set('Example of contour plot');


$graph->title->SetFont(FF_ARIAL,FS_BOLD,14);

$graph->legend->SetPos(0.05,0.5,'right','center');
$graph->SetScale('intint');
$graph->SetAxisStyle(AXSTYLE_BOXOUT);
$graph->xgrid->Show();
$graph->ygrid->Show();

// UN contour por defecto (lneas isobaras)


$cp = new ContourPlot($data);

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 51


Manual Mca024

$cp->ShowLegend();

$cp->SetLineWeight(2);
$graph->Add($cp);

$graph->Stroke();

?>

LECCION 17 Manejo de escalas en los ejes

Elementos comunes a todos los tipos de grficos

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 52


Manual Mca024

Elementos comunes a todos los tipos de grfico de Pie

Diferentes tipos de escalas

La escala de los ejes de los grficos es controlada por el mtodo SetScale de la clase Graph Graph::SetScale() el
cual puede tomar cualquiera de los siguientes strings como parmetro : "intint", "intlin", "intlog", "linint", "linlin",
"linlog", "logint", "loglin", "loglog", "textint", "textlin", "textlog", "datint","datlin","datlog"

La primera mitad del string define la escala del ejex y la segunda mitad del string define la escala del ejey.

Tipos de escalas numericas :

Escala entera "int"


Escala linear lin , etiquetas decimales
Escala logartmica (log)

El estilo de las etiquetas puede ser formateado de dos maneras:

Especificando un formato de string con (formato printf()) el cual puede ser utilizado invocando el metodo
Axis::SetLabelFormatString() . El formato del string es interpretado de acuerdo al segundo parmetro. Si
este parmetro es "true" el string de formato ser asumido a manejar una fecha como se maneja la
funcin date().
Especificando una funcin callback. La funcin o mtodo callback se invocoa con una etiqueta como nico
algumento y debe retornar la etiqueta a ser impresa Axis::SetLabelFormatCallback()

Por ejemplo. Una manera sencilla de obtneer 1000' separadores para nmeros es agregar la funcin de PHP
number_format() como callback en el eje y.

$graph->yaxis->SetLabelFormatCallback('number_format');

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 53


Manual Mca024

Otro ejemplo de uso de callback es para revertir el eje Y. Por defecto, el eje Y crece de arriba hacia abajo, pero es
posible voltearlo.

En este caso el cdigo multiplica por -1 todos los valores de Y

<?php // content="text/plain; charset=utf-8"

require_once ('../../jpgraph/jpgraph.php');

require_once ('../../jpgraph/jpgraph_line.php');

// Callback negando el argumento

function _cb_negate($aVal) {

return round(-$aVal);

// Una curva de profundidad

$ydata =
array(0,1,4,5,8,9,10,14,16,16,16,18,20,20,20,22,22.5,22,19,19,15,15,15,15,10,10,10,6,5,5,5,4,4,2,1,0);

// Todos los datos, multiplicados por -1

$n = count($ydata);

for($i=0; $i<$n; ++$i) {

$ydata[$i] = round(-$ydata[$i]);

// Configuracin del grfico

$graph = new Graph(400,300);

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 54


Manual Mca024

$graph->SetScale("linlin");

$graph->img->SetMargin(50,50,60,40);

$graph->SetMarginColor('darkblue');

$graph->SetColor('darkblue');

$graph->SetAxisStyle(AXSTYLE_BOXOUT);

$graph->SetBackgroundImage("blueblack400x300grad.png",1);

$graph->title->Set("Depth curve. Dive #2");

$graph->title->SetFont(FF_FONT1,FS_BOLD);

$graph->title->SetColor("white");

$graph->subtitle->Set("(Negated Y-axis)");

$graph->subtitle->SetFont(FF_FONT1,FS_NORMAL);

$graph->subtitle->SetColor("white");

// Seteo de los ejes

$graph->yaxis->SetLabelFormatCallback("_cb_negate");

$graph->xaxis->SetColor("lightblue","white");

$graph->yaxis->SetColor("lightblue","white");

$graph->ygrid->SetColor("blue");

$lp1 = new LinePlot($ydata);

$lp1->SetColor("yellow");

$lp1->SetWeight(2);

$graph->Add($lp1);

$graph->Stroke();

?>

Escalas de tipo textual

Solo existe una escala de texto pura, la text.

Este tipo de escala es exclusivamente utilizada para el eje x.

El uso primario de esta escala es para etiquetar las barras en un grfico de barras. No existe el concepto de
autoescala para las escales de texto. El objetivo de este tipo de escala es evitar colocar manualmente todas las
etiquetas empleando el mtodo Axis::SetTickLabels().

Escalas de tipo Fechas

Escala "dat"

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 55


Manual Mca024

Esta escala asume que los valores son timestamps y se encuentran en el formato correcto.

Manejo Manual vs Automtico de la escala

Por defecto la escala es determinada automticamente.

Existen dos modos para manualmente ajustar las escalas.

Especificacin de valores min/max para la escala, pero lo s tick marks son determinados automticamente.

En este caso se utiliza el mtodo SetScale() indicandole los mximos y los mnimos para los ejes. Los dos
argumentos siguientes al tipo de escala determinan el min/max para el eje y, y los dos siguientes (cuarto y quinto)
para el eje x. A continuacin se muestra un ejemplo.

$graph->SetScale('intlin',0,0,-10,20);

El eje Y se escala automticamente, El eje X se escala a [-10,20]

$graph->SetScale('intlin',0,50);

El eje Y se escala en el rango [0,50] y el eje X se escala automticamente

$graph->SetScale('intlin','-10,10,-20,20);

El eje Y se escala en el rango [-10,10] y el eje X se escala en el rango [-20,20]

Escalas semi automticas

Scale::SetAutoMin()

$graph->yaxis->scale->SetAutoMin(0); Coloca el valor mnimo de Y a mostrar en 0

Scale::SetAutoMax()

$graph->xaxis->scale->SetAutoMax(1000); Coloca el mximo del eje X en 1000

Marcas, ticks

Existen dos timpos de marcas, mayores y menores. Las marcas mayores tienen una etiqueta asociada. El objeto
tick es una instancia de la clase scale:

$Graph::Axis::Scale::ticks

Refinando los ticks:

Graph::SetTickDensity($aYDensity,$aXDensity)

Las densidades para las escalas x e y pueden ser establecidas con los siguientes valores simblicos

TICKD_DENSE

TICKD_NORMAL

TICKD_SPARSE

TICKD_VERYSPARSE

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 56


Manual Mca024

Por defecto todas las escalas son fiajdas en TICKD_NORMAL

Manualmente se puede especificar el tamao del paso entre los ticks mayores y menores.

LinearTicks::Set($aMajStep,$aMinStep=false)

Ejemplo: $graph->xaxis->scale->ticks->Set(20,5);

LECCION 18 Manejo de colores

Para simplificar el manejo de colores, JpGraph soporta varios mecanismos para ajustar y manipular los colores bien
sea por valor o por nombre.

La mayora de los mtodos para ajustar los colores (con una excepcin bsica) para todos los objetos en el grfico
tiene uno o dos nombres.

SetColor(), Establece el color de trazado o si el objeto tiene un solo color como los fonts lo establece a ese color.

SetFillColor(), Establece el color de relleno para los objetos que tienen el concepto de un rea.

Especificando los colores por el nombre

SetColor('white');

SetFillColor('orange');

Especificando los colores por una tripleta RGB

RGB especifica los valores para el color, la R representa el componente Rojo, la G el componente Verde y la B el
componente Azul. Cada componente es especificado como un entero en el rango de [0,255] y la tripleta es
especificado como un arreglo.

Por ejemplo:

SetColor( array(255,255,255));

SetColor( array(0xff,0xff,0xff));

SetFillColor( array(0x44,0x54,0xa4));

Un valor de color array(0,0,0) indica negro y un valor de array(255,255,255) indica blanco.

Utilizando las especificaciones de color HTML

Se indica el color en el format HTML indicando el valor del color como un string.

SetColor('#333'), forma corta de SetColor('#333333')

SetColor('#12be7a')

SetFillColor('#99eff5')

Utilizando los modificadores de los canales alfa (transparencia)

SetFillColor('red@0.2'), rojo ligeramente transparente

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 57


Manual Mca024

SetFillColor('red@0.8'), rojo, caso completamente transparente

Ajustando el brillo

SetColor('red:0.8');, Un rojo ligeramente oscuro

SetColor('red:1.5');, Un rojo brillante

SetColor('#3485a9:1.8);, Un color entre verde y azul brillante

Combinando brillo y transparencia

SetColor('red@0.7:1.2'), Un rojo altamamente transparente y ligeramente brillante

SetFillColor('#4545aa@0.3:1.5'), Un azul brillante semi transparente

LECCION 19 gd1 y gd2 en php como soporte

La versin de la librera 5.x requiere tener instalada la extensin gd2. La versin deprecated 4.x utiliza la
extensin gd1.

Para ver la versin de la extensin gd instalada se utiliza la funcin de PHP phpinfo();

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 58


Manual Mca024

En esta extensin se detallan los tipos de grficos soportados.

LECCION 20 Manejo de leyendas y ttulos

Los ejes x y y de cada grfico adems de las escala, tienen asociados leyendas, etiquetas, ttulos, rejillas,
colores y posiciones. Las propiedades de los ejes son accedidas como objetos de las instancias de los ejes de
la clase graph. Los ejes pueden ser accedidos.

Graph::xaxis, Eje X, (por defecto abajo)

Graph::yaxis, Eje Y (por defecto a la izquierda)

Graph::y2axis, Segundo Eje Y (por defecto a la derecha)

Axis::scale. Es la escala.

Axis::title. El ttulo del eje. En el eje X se coloca de manera horizontal por defecto , mientras que en el
eje Y se coloca vertical por defecto

On the other hand there are a large amount of methods that can be used on the axis to adjust various
properties. Some examples of commonly used methods are given below. The full description of each method
is given in the API reference.

Ajustando las etiquetas

o Axis::SetLabelFormatString($aFormStr,$aDateFormat=false). Especifica el format de las


etiquetas asumiendo un formato de string printf() si $aDate es false y en un formato
date() si $aDate es true.

o Axis::SetLabelFormatCallback($aCallbackFunc)

o Axis::SetLabelAlign($aHorAlign, $aVertAlign='top',$aParagraphAlign='left')

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 59


Manual Mca024

o Axis::HideLabels($aHide=true)

o Axis::SetTicklabels($aLabels, $aLabelColors=null)

o Axis::SetLabelMargin($aMargin)

o Axis::SetLabelSide($aSide)

o Axis::SetFont($aFamily,$aStyle=FS_NORMAL,$aSize=10)

o Axis::SetLabelAngle($aAngle). Especifica el ngulo de las etiqueta. Note: Es possible utilizar


cualquier angulo si el fuente es del tipo TTF. Los fuentes de tipo bit map solo soportan 0 y
90 grados.

Ajustando el ttulo

o Axis::SetTitle($aTxt)

o Axis::SetTitleMargin($aMargin)

o Axis::SetTitleSide($aSide)

o Axis::SetColor($aColor,$aLabelColor)

Ajustando la posicin y el layout de la leyenda

En jpgraph existen tres modos de formatear y colocar la leyenda.

1. Ajustando los parmetros bsicos como el color y el ancho del marco alrededor de la caja del plot, as
como agregando y removiendo una sombra de la caja de la leyenda.
2. Ajustando la posicin de la leyenda en el grfico.
3. Ajustando el nmero de columnas que debe ser utilizado para la diagramacin interna de la caja de la
leyenda. Por defecto la leyenda utiliza una columna.

La siguiente figura muestra unos ejemplos de cmo colocar las leyendas.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 60


Manual Mca024

La manera como una leyenda se coloca es a travs de los siguientes mtodos

Legend::SetPos($aX,$aY,$aHAlign='right',$aVAlign='top')

Legend::SetAbsPos($aX,$aY,$aHAlign='right',$aVAlign='top')

El primer mtodo especirica la posicin en fraccin del ancho y del alto, mientras el segundo indica la posicin
en pixeles de manera absoluta donde (0,0) es la esquina superior izquierda. El punto de ancla de la leyenda
debe alinearse, esto se realiza con los dos ltimos parmetros de ambos mtodos. A continuacin se muestra un
ejemplo

$graph->legend->SetPos(0.5,0.98,'center','bottom');

El layout de la caja de la leyenda tambin puede ser ajustado indicando el nmero de columnas que la leyenda
utilizar. Por defecto, una columna es utilizada.

Legend::SetColumns($aNbr)

El siguiente ejemplo muestra leyendas con varios nmeros de columnas.

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 61


Manual Mca024

LECCION 21 Uso de fuentes ttf

Agregando fuentes ttf personalizados

Adicionalmente a las fuentes predefinidas, es posible fcilmente configurar hasta tres tipos de fuentes
personalizados. Esto ser realiza indicando el nombre del archivo de la fuente a utilizar y la familia del fuente como
cualquiera de FF_USERFONT1, FF_USERFONT2 o FF_USERFONT3. Una nueva fuente es instalada invocando a uno
de los siguientes mtodos.

Graph::SetUserFont1($aNormal,$aBold,$aItalic,$aBoldIt) (o el sinnimo SetUserFont() )

Graph::SetUserFont2($aNormal,$aBold,$aItalic,$aBoldIt)

Graph::SetUserFont3($aNormal,$aBold,$aItalic,$aBoldIt)

El argumento de estos mtodos deben ser los nombres de los arhivos completos (incluyendo la ruta) para las
familias de los fuentes normal, bold, italic y/o bolditalic variant of the font family. Todos los parmetros a
excepcin de "$aNormal" son opcionales.

<?php

// ...

$graph->SetUserFont('/usr/share/fonts/ttf/digital.ttf');

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 62


Manual Mca024

$graph->title->SetFont(FF_USERFONT1,FS_NORMAL,12);

$graph->title->Set('Test title '.$pi);

// ...

?>

LECCION 22 Comparacin tipos de licenciamiento

La licencia de Software de JpGraph es liberada bajo una licencia dual. QPL 1.0 (Qt Free License) para uso no
commercial, de cdigo abierto o uso educacional y una licencia JpGraph Professional License para uso
comercial. La licencia profesional incluye caractersticas adicionales y soporte.

En la pgina de descargas de JpGraph se pueden visualizar los diferentes tipos de licienciamiento y versiones

La versin profesional ofrece las siguientes caractersticas

Mdulo para el cdigo de barras: Linear-Barcode, 2D-Barcode PDF417, 2D-Barcode datamatrix, QR-Code 2-
dimensional high capacity barcodes

Mdulos para el Odometer/Tachometer

Mdulos para Windrose (Rosa de los vientos)

Visualizacin de matrices

Grficos similiares a las tablas de excel

Soporte via email

Todos los derechos reservados, prohibida la reproduccin, Instituto Gala de Venezuela 63