Escolar Documentos
Profissional Documentos
Cultura Documentos
S diferente, intgrate
Mca024
Fecha: 11 / 06 / 2013
INDICE
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.
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.
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.
<?php
require('libs/fpdf/fpdf.php');
$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Output();
?>
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');
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.
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.
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.
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.
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:
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
$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:
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().
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.
$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]]]]]]])
H: alto de la celda.
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.
Fill: indica si el fondo de la celda va a ir con color o no. los valores son True o False
$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.
Su sintaxis es la siguiente:
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.
$fpdf->Output('prueba','I');
FPDF - constructor
Ln - salto de lnea
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
En el siguiente ejemplo se crea un encabezado para el documento pdf. Se coloca un logo y una serie de estilos.
<?php
require('libs/fpdf/fpdf.php');
//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');
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
$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.
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.
<?php
require('fpdf.php');
//Pie de pgina
function Footer()
$this->SetY(-10);
$this->SetFont('Arial','I',8);
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
$pdf->Output();
?>
En el mtodo Footer
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.
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
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
margin
Image()
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.
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:
type:Formato de la imagen.
$this->Image('logo.jpg',10,8,22);
<?php
require('/libs/fpdf/fpdf.php');
$pdf=new FPDF();
//Primera pgina
$pdf->AddPage();
$pdf->SetFont('Arial','',15);
$pdf->Cell(40,20);
$pdf->Output();
?>
Este ejemplo es bastante sencillo y lo nico que hace es mostrar un texto que presenta una imagen que aparecer
debajo centrada.
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');
//Encabezado
function Header()
//Logo
//Arial bold 15
$this->SetFont('Arial','B',15);
//Moverse a la derecha
$this->Cell(80);
//Ttulo
//Salto de lnea
$this->Ln(20);
//Pie de pgina
function Footer()
$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 TituloArchivo($num,$label)
$this->SetY(55);
//Arial 12
$this->SetFont('Arial','',12);
//Color de fondo
$this->SetFillColor(200,220,255);
//Ttulo
//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);
$this->MultiCell(0,5,$txt);
//Salto de lnea
$this->Ln();
function ImprimirArchivo($num,$title,$file)
$this->AddPage();
$this->TituloArchivo($num,$title);
$this->CuerpoArchivo($file);
$pdf=new PDF();
$pdf->SetTitle($title);
$pdf->SetY(65);
$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.
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:
siendo:
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:
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
L: izquierda
T: superior
R: derecha
B: inferior
L: a la izquierda
C: centrado
R: a la derecha
fill : Indica si el fondo de la celda debe ser dibujado (true) o transparente (false). Valor por defecto: false.
<?
require('fpdf/fpdf.php');
//Columna actual
var $col=0;
var $y=0;
//Encabezado de pgina
function Header()
//Logo
//Arial bold 15
$this->SetFont('Arial','B',15);
// Se mueve a la derecha
$this->Cell(80);
//Ttulo
//Salto de lnea
$this->Ln(20);
//Pie de pgina
function Footer()
$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)
$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()
if($this->col<2)
$this->SetCol($this->col+1);
$this->SetY($this->y0);
return false;
else
$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
//Salto de lnea
$this->Ln(4);
//Guardar ordenada
$this->y0=$this->GetY();
function CuerpoArchivo($file)
// Se lee el archivo
$f=fopen($file,'r');
$txt=fread($f,filesize($file));
fclose($f);
//Times 12
$this->SetFont('Times','',12);
$this->MultiCell(60,5,$txt);
//Salto de lnea
$this->Ln();
$this->SetCol(0);
function ImprimirArchivo($num,$title,$file)
$this->AddPage();
$this->TituloArchivo($num,$title);
$this->CuerpoArchivo($file);
$pdf=new PDF();
$pdf->SetTitle($title);
$pdf->SetY(65);
$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');
//Columna actual
var $col=0;
var $y=0;
//Encabezado de pgina
function Header()
//Logo
//Arial bold 15
$this->SetFont('Arial','B',15);
$this->Cell(80);
//Ttulo
//Salto de lnea
$this->Ln(20);
//Pie de pgina
function Footer()
$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)
$this->col=$col;
$x=10+$col*75;
$this->SetLeftMargin($x);
$this->SetX($x);
function AcceptPageBreak()
if($this->col<2)
$this->SetCol($this->col+1);
$this->SetY($this->y0);
return false;
else
$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->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);
$this->MultiCell(60,5,$txt);
//Salto de lnea
$this->Ln();
$this->SetCol(0);
function ImprimirArchivo($num,$title,$file)
$this->AddPage();
$this->TituloArchivo($num,$title);
$this->CuerpoArchivo($file);
$pdf=new PDF();
$pdf->SetTitle($title);
$pdf->SetY(65);
$pdf->ImprimirArchivo(2,'Otro archivo','prueba2.txt');
$pdf->Output();
LECCION 9 Tablas
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.
function TablaBasica($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);
$pdf=new PDF();
$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.
function TablaColores($header)
$this->SetFillColor(255,0,0);
$this->SetTextColor(255);
$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();
$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.
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.
<?
require('libs/fpdf/fpdf.php');
//Encabezado de pgina
function Header()
//Logo
//Arial bold 15
$this->SetFont('Arial','B',15);
//Moverse a la derecha
$this->Cell(80);
//Ttulo
//Salto de lnea
$this->Ln(20);
//Pie de pgina
function Footer()
$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');
//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)
$this->SetFillColor(255,0,0);
$this->SetTextColor(255);
$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();
$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');
$pdf=new PDF();
$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();
?>
Write
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.
Parmetros :
Alto de lnea.
txt
link
Ejemplo
$pdf->SetFont('Arial','',14);
$pdf->Write(5,'Visit ');
$pdf->SetTextColor(0,0,255);
$pdf->SetFont('','U');
$pdf->Write(5,'www.fpdf.org','http://www.fpdf.org');
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.
int AddLink()
El identificador resultante puede ser pasado a los mtodos Cell(), Write(), Image() o Link(). El destino se define
con SetLink().
SetLink
Su sintaxis es la siguiente:
Donde:
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.
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');
//Cabecera de pgina
function Header()
//Logo
//Arial bold 15
$this->SetFont('Arial','B',15);
//Mover a la derecha
$this->Cell(80);
//Ttulo
//Salto de lnea
$this->Ln(20)
//Pie de pgina
function Footer()
$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');
$pdf=new PDF();
$pdf->AliasNbPages();
//Primera pgina
$pdf->AddPage();
$pdf->SetFont('Arial','',15);
$pdf->Cell(40,20);
$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:
Donde:
<?
require('/libs/fpdf/fpdf.php');
// Encabezado de pgina
function Header()
//Logo
//Arial bold 15
$this->SetFont('Arial','B',15);
//Moverse a la derecha
$this->Cell(80);
//Ttulo
//Salto de lnea
$this->Ln(20);
//Pie de pgina
function Footer()
$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');
$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();
?>
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.
Para Type1, es necesario el archivo AFM correspondiente. Por lo general, ste es provisto con 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:
fontfile
enc
embed
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.
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:
cp1251 (cirlico)
cp1253 (griego)
cp1254 (turco)
cp1255 (hebreo)
cp1257 (bltico)
cp1258 (vietnamita)
cp874 (tailands)
ISO-8859-4 (bltico)
ISO-8859-5 (cirlico)
ISO-8859-7 (griego)
ISO-8859-9 (turco)
ISO-8859-11 (tailands)
KOI8-R (ruso)
KOI8-U (ucraniano)
Por supuesto, la fuente debe contener los caracteres adecuados a la codificacin escogida.
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.
Ejemplo:
<?php
require('makefont/makefont.php');
MakeFont('c:\\Windows\\Fonts\\comic.ttf','cp1252');
?>
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.
Por ltimo, para las fuentes TrueType y OpenType, tambin se puede generar los archivos en lnea en lugar de
hacerlo manualmente.
$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
<?php
require('makefont/makefont.php');
MakeFont('calligra.ttf','cp1252');
?>
El carcter del euro no est en la fuente (es muy antigua). Otro carcter tampoco se encuentra en la fuente.
Se pueden copiar estos dos archivos en el directorio de fuentes (font) y escribir el script:
<?php
require('fpdf.php');
$pdf->AddFont('Calligrapher','','calligra.php');
$pdf->AddPage();
$pdf->SetFont('Calligrapher','',35);
$pdf->Output();
?>
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
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.
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:
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.
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).
"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.
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
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->SetScale('textlin');
$lineplot=new LinePlot($ydata);
$lineplot->SetColor('blue');
$graph->Add($lineplot);
// Desplegar el grfico
$graph->Stroke();
?>
PHP5
La extensin GD 2.x instalanda
Caractersticas de la librera
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
14. DateLocale Usada por los diagramas de Gannt para trabajar con las fechas localizadas
16. DateScaleUnits
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.
<?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');
//===================================================
// 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 {
.
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
$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');
$graph->legend->SetFrameWeight(1);
// Output line
$graph->Stroke();
?>
Barras
$data1y=array(47,80,40,116);
$data2y=array(61,30,82,105);
$data3y=array(115,50,70,93);
$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);
$b1plot->SetColor("white");
$b1plot->SetFillColor("#cc1111");
$b2plot->SetColor("white");
$b2plot->SetFillColor("#11cccc");
$b3plot->SetColor("white");
$b3plot->SetFillColor("#1111cc");
$graph->title->Set("Bar Plots");
// Desplegar el grfico
$graph->Stroke();
?>
Tortas
$theme_class="DefaultTheme";
//$graph->SetTheme(new $theme_class());
// Ttulo
$graph->title->Set("A Simple Pie Plot");
$graph->SetBox(true);
$p1->ShowBorder();
$p1->SetColor('black');
$p1->SetSliceColors(array('#1E90FF','#2E8B57','#ADFF2F','#DC143C','#BA55D3'));
$graph->Stroke();
?>
Otros
// 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);
//$p1->HideEndLines();
?>
Ejemplo de un 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));
$graph->legend->SetPos(0.05,0.5,'right','center');
$graph->SetScale('intint');
$graph->SetAxisStyle(AXSTYLE_BOXOUT);
$graph->xgrid->Show();
$graph->ygrid->Show();
$cp->ShowLegend();
$cp->SetLineWeight(2);
$graph->Add($cp);
$graph->Stroke();
?>
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.
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');
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.
require_once ('../../jpgraph/jpgraph.php');
require_once ('../../jpgraph/jpgraph_line.php');
function _cb_negate($aVal) {
return round(-$aVal);
$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);
$n = count($ydata);
$ydata[$i] = round(-$ydata[$i]);
$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->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");
$graph->yaxis->SetLabelFormatCallback("_cb_negate");
$graph->xaxis->SetColor("lightblue","white");
$graph->yaxis->SetColor("lightblue","white");
$graph->ygrid->SetColor("blue");
$lp1->SetColor("yellow");
$lp1->SetWeight(2);
$graph->Add($lp1);
$graph->Stroke();
?>
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().
Escala "dat"
Esta escala asume que los valores son timestamps y se encuentran en el formato correcto.
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);
$graph->SetScale('intlin',0,50);
$graph->SetScale('intlin','-10,10,-20,20);
Scale::SetAutoMin()
Scale::SetAutoMax()
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
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
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);
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.
SetColor('white');
SetFillColor('orange');
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));
Se indica el color en el format HTML indicando el valor del color como un string.
SetColor('#12be7a')
SetFillColor('#99eff5')
Ajustando el brillo
La versin de la librera 5.x requiere tener instalada la extensin gd2. La versin deprecated 4.x utiliza la
extensin gd1.
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.
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.
o Axis::SetLabelFormatCallback($aCallbackFunc)
o Axis::SetLabelAlign($aHorAlign, $aVertAlign='top',$aParagraphAlign='left')
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)
Ajustando el ttulo
o Axis::SetTitle($aTxt)
o Axis::SetTitleMargin($aMargin)
o Axis::SetTitleSide($aSide)
o Axis::SetColor($aColor,$aLabelColor)
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.
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)
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::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');
$graph->title->SetFont(FF_USERFONT1,FS_NORMAL,12);
// ...
?>
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
Mdulo para el cdigo de barras: Linear-Barcode, 2D-Barcode PDF417, 2D-Barcode datamatrix, QR-Code 2-
dimensional high capacity barcodes
Visualizacin de matrices