Manual Explicativo Fpdf

Manual Mca024 Sé diferente, intégrate… Mca024 Manual ca024 CURSO IMPLEMENTACION de FPDF y JPGRAPH en PHP Fecha: 11 /

Views 888 Downloads 65 File size 871KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Manual Mca024

Sé diferente, intégrate…

Mca024

Manual ca024 CURSO IMPLEMENTACION de FPDF y JPGRAPH en PHP

Fecha: 11 / 06 / 2013

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

1

Manual Mca024

INDICE

Pag. 3

Lección 1 Introducción a FPDF

Pag. 4

Lección 2 Características de FPDF

Pag. 5

Lección 3 Clases de fPDF

Pag. 8

Lección 4 Manejo de encabezado y pie de página

Pag. 11

Lección 5 Saltos de página

Pag. 11

Lección 6 Incluyendo imágenes

Pag. 13

Lección 7 Manejando colores

Pag. 17

Lección 8 Múltiples columnas

Pag. 24

Lección 9 Tablas

Pag. 30

Lección 10 Texto flotante

Pag. 31

Lección 11 Manejo de enlaces

Pag. 35

Lección 12 Uso de fuentes TTF

Pag. 39

Lección 13 Introducción a jpgraph

Pag. 41

Lección 14 Características de jpgraph

Pag. 44

Lección 15 Clases jpgraph

Pag. 46

Lección 16 Tipos de gráficos: Líneas, Barras, Tortas y Otros

Pag. 52

Lección 17 Manejo de escalas en los ejes

Pag. 57

Lección 18 Manejo de colores

Pag. 58

Lección 19 gd1 y gd2 en php como soporte

Pag. 59

Lección 20 Manejo de leyendas y títulos

Pag. 62

Lección 21 Uso de fuentes ttf

Pag. 63

Lección 22 Comparación tipos de licenciamiento

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

2

Manual Mca024

LECCION 1

Introducción a FPDF

Fpdf es una librería escrita en el lenguaje de Programación PHP empleando clases que permite crear archivos en formato PDF sin ningún requerimiento adicional. Es gratuita, y su licencia permite que sea modificada libremente. Entre las funcionalidades que ofrece esta biblioteca se encuentran:



Elección de la unidad de medida, formato de página y márgenes



Administración de encabezados y pies de página



Salto de página automático



Salto de línea y justificación del texto automáticos



Inclusión de imágenes (JPEG , PNG y GIF (versión 1.6) )



Colores



Enlaces

Esta librería de clases en PHP está desarrollada bajo el paradigma de programación orientada objetos, siendo el Objeto fpdf el encargado de ir almacenando la estructura, y mostrándolo con la función 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 más 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, dinámicamente a partir de scripts PHP. Esta clase trabaja de manera totalmente autónoma, por lo que no requiere utilizar la librería PDFlib ni cualquier otro producto similar. Se trata de una clase ofreciendo bastantes características de configuración, ya que es posible modificar la unidad de medida, el formato de la página, los márgenes, los encabezados y los pies de página, los saltos de línea, las imágenes, colores, enlaces, etc. Un detalle importante es que FPDF es una librería 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. Instalación de FPDF Esta clase requiere al menos PHP 4 o superior. Además tiene algunas extensiones que pueden resultar útiles. Después de esta pequeña introducción vamos a pasar a descargar e instalar las librerías necesarias para su utilización. Para ello nos descargamos la última versión de FPDF en el siguiente enlace, en la sección 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 instalación no requiere ningún otro requisito. Trabajando con FPDF para generar un PDF desde PHP

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

3

Manual Mca024 FPDF se utiliza como cualquier clase de programación orientada a objetos con PHP, por lo que lo más importante será conocer y dominar sus diferentes métodos y propiedades. A continuación se muestra un ejemplo muy sencillo que no requiere mucha programación PHP. El formato general para escribir una página en PDF sería el siguiente:

Si se ejecuta esto directamente aparecerá un archivo PDF con el texto colocado. Analizando todas las lineas escritas: Lo primero es incluir la librería fpdf.php En la linea $pdf=new FPDF(); se crear el objeto FPDF. Si no se coloca ningún parámetro en el constructor, el objeto se creará con los valores por defecto, en este caso serían los siguientes: el tamaño de página es A4, el formato vertical y la unidad de medida el milímetro. Si se requieren modificar estos parámetros seria en el siguiente orden $pdf=new FPDF('formato','unidad de medida','tamaño'); En la linea $pfd->AddPage(); se añade una página. Con SetFont(); se le da formato al texto diciendo el tipo de letra, si es en negrita o no, y el tamaño de la letra. En la linea $pdf->Cell(); se empieza a escribir el contenido de la página. 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 envía al navegador. Es importante no poner esta línea antes de terminar de escribir el archivo.

LECCION 2

Características de FPDF

Las principales características de FPDF se enumeran a continuación:

        

Elección de la unidad de medida, formato de página y márgenes Administración de encabezados y pies de página Salto de página automático Salto de línea y justificación del texto automáticos Admisión de imágenes (JPEG, PNG y GIF) Colores Enlaces Admisión de fuentes TrueType (TTF), Type1 y codificación Compresión de página

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

4

Manual Mca024 FPDF no necesita de ninguna extensión para PHP (excepto zlib para activar la compresión 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, ciríloco, griego, báltico y tailandés, si se dispone de fuentes TrueType o Type1 con el conjunto de caracteres adecuado. El chino y el japonés también están admitidos. UTF-8 también está disponible. ¿En cuanto a la eficiencia? La velocidad de generación de un documento es menor que con PDFlib. Sin embargo, la desventaja en cuanto a rendimiento es muy razonable y se adecúa a la mayoría de los casos, a no ser que los documentos vayan a ser especialmente complejos o extensos. LECCION 3

Clases de fPDF

La librería solo contiene dos clases, la clase FPDF conteniendo todos los métodos para la generación de los documentos y la clase TTFParser, un utilitario para realizar el parsing de los documentos TTF. Esta lección se enfocará en la clase FPDF. Clase FPDF Métodos importantes FPDF() Constructor

El constructor FPDF()permite crear el documento pdf y darle un formato. Se debe tener en cuenta que los parámetros que se le pasen se usarán en todos los métodos. Su sintaxis es la siguiente: FPDF([string orientación [, string unidad [, mixed formato]]); orientación es la forma de colocación de la página, 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” milímetro, “cm” centímetro e “in” pulgada. El valor por defecto es el “mm” formato de la página. Puede tener los siguientes valores: A3, A4, A5, Letter y Legal. El valor por defecto es A4 Un ejemplo sería el siguiente: $pdf=new FPDF('L','pt','Legal');

AddPage() Esta función añade una página nueva al documento pdf. Como parámetros tan solo tiene la orientación y el formato, el resto de características las toma por defecto del constructor. Su sintaxis es la siguiente: AddPage([string orientacion[,mixed formato]]);

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

5

Manual Mca024 Los parámetros orientación y formato son iguales que en FPDF(). Si no se le pasan parámetros utilizará automáticamente los del constructor. SetFont Es la función que permite establecer el formato de la fuente utilizada en el archivo pdf. Es obligatorio llamar a esta función al inicio de la creación del archivo ya que sino el documento no sería válido. Si se requiere añadir un tipo de fuente no disponible en el standar se debe utilizar la función 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 añadir una mediante AddFont(); estilo: estilo de la fuente que puede ser regular (no se indica)”, negrita “B”, italica “I” y subindice “U”. size: tamaño de la fuente en puntos. Su valor por defecto es 12. Un ejemplo seria el siguiente: $pdf->SetFont('Helvetica','I',13); Cell Esta función 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 añadir. Borde: indica si van a ser visibles o no. si es 0 no serán visibles, si es 1 se verán los bordes. Ln: dice donde se empezara a escribir después de llamar a esta función. Siendo 0 a la derecha, 1 al comienzo de la siguiente línea, 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 sería el siguiente: $pdf->Cell(10,10,'Estamos viendo',1,1,'C'); Output() Envía el documento al navegador, a un archivo local o a una cadena. Se puede abrir en un cuadro de diálogo o prepararlo para una descarga.

Todos los derechos reservados, prohibida la reproducción, 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 envío en el documento. “I” envía el documento al navegador con la opción de guardar como..., “D” envía 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 continuación se resumen todos los métodos de la clase. Métodos de la clase FPDF

FPDF 1.7 Manual de Referencia AcceptPageBreak - acepta o no un salto de página automático AddFont - añade una nueva fuente AddLink - crea una referencia interna AddPage - añade una nueva página AliasNbPages - define un alias para el número de páginas Cell - imprime una celda Close - termina el documento Error - error fatal Footer - pie de página FPDF - constructor GetStringWidth - calcula la longitud de la cadena GetX - obtiene la posición actual de x GetY - obtiene la posición actual de y Header - cabecera de página Image - imprime una imagen Line - dibuja un línea Link - pone una referencia Ln - salto de línea MultiCell - imprime texto con saltos de línea Output - guarda o envía el documento

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

7

Manual Mca024 PageNo - número de página Rect - dibuja un rectángulo SetAuthor - establece el autor del documento SetAutoPageBreak - establece el modo de salto de página automático SetCompression - cambia la compresión en activo o inactivo SetCreator - establece el creador del documento SetDisplayMode - establece el modo de presentación SetDrawColor - establece el color de graficación SetFillColor - establece el color de relleno SetFont - establece la fuente SetFontSize - establece el tamaño de la fuente SetKeywords - asocia las palabras claves con el documento SetLeftMargin - establece el margen izquierdo SetLineWidth - establece el ancho de la línea SetLink - establece el enlace de destino SetMargins - establece los márgenes SetRightMargin - establece el margen derecho SetSubject - establece el tema del documento SetTextColor - establece el color del texto SetTitle - establece el título del documento SetTopMargin - Establece el margen superior SetX - establece la posición actual de x SetXY - establece la posición actual de x y y SetY - establece la posición actual de y Text - imprime una cadena Write - imprime el siguiente texto

LECCION 4

Manejo de encabezado y pie de página

Para editar el encabezado y el pie de página, se requiere crear una clase y heredar la clase FPDF sobrescribiendo los métodos Header() y Footer(). Encabezado

Todos los derechos reservados, prohibida la reproducción, 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 código se muestra a continuación.

La línea “$this->Image ('logo.png',12,9,30);” coloca la imagen pasada como parámetro. En esta método se pasa como parámetro 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 línea ($this->SetFont('Arial','B',12);) se da formato al texto del encabezado. La línea $this->Cell (30,10,'Titulo',1,0,'C'); imprime el Título del documento. Una vez sobrescrito el método Header sólo queda crear el objeto de la clase heredada y realizar el documento pdf. Pie Para dar formato al pie se debe realizar la misma operación que con el encabezado, es decir, sobrescribir el método Footer. Para ello se realiza la misma operación anterior. A continuación se muestra con un ejemplo.

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

9

Manual Mca024

En el método Footer La línea $this->SetY (-15); posiciona el pie a 1,0 cm del final. La siguiente línea da el formato del texto del pie. La última línea del método imprime el número de página 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 línea a la derecha y el texto centrado.

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

10

Manual Mca024 LECCION 5

Saltos de página

Otra característica interesante de FPDF es el salto automático de página. Tan pronto como una celda cruza el límite máximo de la página (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 automático de recuperación también se aplica a los colores y al ancho de línea. El límite que fuerza los saltos de página puede establecerse con el método SetAutoPageBreak(). AcceptPageBreak boolean AcceptPageBreak() Descripción En cualquier momento que un salto de página es encontrado, es invocado el método, y el salto es emitido o no dependiendo del valor retornado. La implementación por defecto retorna un valor de acuerdo a el modo seleccionado por SetAutoPageBreak(). Este método es invocado automáticamente y no debería ser llamado directamente por la aplicación. SetAutoPageBreak SetAutoPageBreak(boolean auto [, float margin]) Descripción Activa o desactiva el modo de salto de página automático. Cuando es habilitado, el segundo parámetro es la distancia de la parte inferior de la página que define al límite desencadenante. Por defecto, el modo está activado y el márgen es 2cm. Parámetros auto Boleano indicando si el modo debería ser activado o desacticado. margin Distancia desde la parte inferior de la página LECCION 6

Incluyendo imágenes

Las imágenes, se incluyen empleando el método Image(). Image() Este método se utiliza para añadir imágenes a los archivos PDF. Admite los formatos JPEG, PNG y GIF (para este formato se necesita la extensión GD). El formato de la imagen se puede especificar explícitamente o simplemente ser deducido a partir de la extensión del archivo. Se tienen tres opciones en cuanto a la especificación de tamaño 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 automáticamente No especificar nada, lo que hará que se imprima la imagen a 72 puntos por pulgada

Este método además permite asociar un enlace a la imagen. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

11

Manual Mca024 Por otro lado si se repiten las imágenes, 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 página. h: Alto de la imagen en la página. type:Formato de la imagen. link: identificador devuelto por el método AddLink() o la url del enlace. Un ejemplo sencillo sería el siguiente: $this->Image('logo.jpg',10,8,22); En este ejemplo se calcularía el alto de la imagen de forma automática. Un ejemplo completo luciría así:

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 reproducción, 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 métodos adicionales, uno para mostrar colores y otro para mostrar multiceldas.

La función TituloArchivo(),permite especificar el diseño de los títulos de los archivos a mostrar. Se le pasa un tipo de letra Arial con un tamaño 12, un color de fondo azul utilizando la función SetFillColor y colocando el titulo con su correspondiente formato, utilizando la función Cell. A continuación se crea la función CuerpoArchivo() la cual lee el archivo y lo coloca en el PDF. Se le pasa como parámetro la ruta del archivo. Con fopen se abre el archivo en modo lectura, después 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 función ImprimirArchivo() que engloba las dos anteriores y hace más sencillo el código.

Método SetFillColor()

Esta función define el color de relleno para celdas y rectángulos 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 reproducción, 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 Método MultiCell() Este método permite imprimir texto con saltos de línea. Estos pueden ser automáticos o explícito (con el carácter \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 página. 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 número: 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 alineación de texto. L: a la izquierda C: centrado R: a la derecha J: justificación (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 reproducción, Instituto Gala de Venezuela

16

Manual Mca024 LECCION 8

Múltiples columnas

Mediante un ejemplo se va a ilustrar como colocar texto en dos columnas. Lo primero a realizar es crear dos variables e inicializarlas:

LECCION 10 Texto flotante El texto flotante en FPDF se implementa con el método Write. Write Write(float h, string txt [, mixed link]) Descripción

Este método imprime el texto desde la posición actual. Cuando el margen derecho es alcanzado (o el carácter \n es alcanzado) se produce un salto de línea y el texto continúa desde el margen izquierdo. Una vez el método termine, la posición actual es dejada justo al final del texto. Es posible poner una referencia sobre el texto. Parámetros : h Alto de línea. txt Cadena a ser impresa. link URL o identificador regresado por AddLink(). Todos los derechos reservados, prohibida la reproducción, 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 métodos que permiten crear enlaces internos y externos en los documentos pdf. AddLink Esta función permite crear un identificador que más tarde se utilizará para crear un enlace interno a la página. Su sintaxis es bastante sencilla ya que no requiere que se le pase ningún parámetro. int AddLink() El identificador resultante puede ser pasado a los métodos Cell(), Write(), Image() o Link(). El destino se define con SetLink(). SetLink Define la posición 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: posición donde se encuentra la sección a la que hace referencia el enlace. El valor por defecto es 0 y se sitúa en la parte superior de la página. page: el número de la página a la que lleva el enlace. Se debe tener en cuenta que esto es para enlaces internos dentro del documento. A continuación se muestra un ejemplo que crea dos páginas con un logo(con enlace externo) en el encabezado y un enlace interno.

Link La función link() se utiliza generalmente para colocar un enlace en una parte concreta de una imagen, se puede seleccionar el área concreta de acción de dicho link. Hay que tener en cuenta que siempre será un rectángulo. 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 rectángulo h: alto del rectángulo link: Url o identificador devuelto por AddLink().

Se podría poner un enlace dentro de una imagen de la siguiente forma:

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 interés es que se puede elegir la codificación de la fuente, permitiendo trabajar con otros idiomas aparte de los europeos occidentales (ya que las fuentes estándar tienen muy pocos caracteres disponibles). Nota: para OpenType, sólo 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 más pequeño; 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 cuestión está instalada en los sistemas de los clientes. Si el archivo está destinado a una audiencia numerosa, es mejor incluir la fuente. Añadir una nueva fuente requiere dos pasos:

 

Generación del archivo de definición de la fuente Declaración del fuente en el script

Para Type1, es necesario el archivo AFM correspondiente. Por lo general, éste es provisto con la fuente. Paso 1. Generación del archivo de definición de la fuente El primer paso consiste en generar un archivo PHP que contenga toda la información que necesita FPDF; además, 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 función: MakeFont(string fontfile, [, string enc [, boolean embed]]) fontfile Ubicación del archivo .ttf, .otf o .pfb. enc Nombre de la codificación. Valor por defecto: cp1252. embed Si se incorpora o no la fuente. Valor por defecto: true. El primer parámetro es el nombre del archivo de la fuente. La extensión 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 reproducción, Instituto Gala de Venezuela

35

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

La codificación define la asociación entre un código (de 0 a 255) y un carácter. Los primeros 123 son fijos y se corresponden con los caracteres ASCII; los siguientes son variables. Las codificaciones se almacenan en archivos .map. Están disponibles: cp1250 (Europa Central) cp1251 (cirílico) cp1252 (Europa Occidental) cp1253 (griego) cp1254 (turco) cp1255 (hebreo) cp1257 (báltico) cp1258 (vietnamita) cp874 (tailandés) ISO-8859-1 (Europa Occidental) ISO-8859-2 (Europa Central) ISO-8859-4 (báltico) ISO-8859-5 (cirílico) ISO-8859-7 (griego) ISO-8859-9 (turco) ISO-8859-11 (tailandés) 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 codificación escogida. Nota: las fuentes estándar usan cp1252. Después de llamar a la función (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 extensión .z (excepto si la función de compresión no está disponible, puesto que requiere la biblioteca Zlib para PHP). También 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 reproducción, Instituto Gala de Venezuela

36

Manual Mca024 Ejemplo:

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 través de la línea de comandos: php makefont\makefont.php c:\Windows\Fonts\comic.ttf cp1252 Por último, para las fuentes TrueType y OpenType, también se puede generar los archivos en línea en lugar de hacerlo manualmente. Paso 2 Declaración de la fuente en el script El segundo paso es el más simple. Sólo se necesita llamar al método 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 continuación se muestra un ejemplo completo. Se va a utilizar la fuente Calligrapher. El primer paso es la generación de los archivos de la fuente:

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 carácter del euro no está en la fuente (es muy antigua). Otro carácter tampoco se encuentra en la fuente.

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

37

Manual Mca024 Alternativamente, se podría haber utilizado la línea de comandos:

php makefont\makefont.php calligra.ttf cp1252 o haber usado el generado en línea. Se pueden copiar estos dos archivos en el directorio de fuentes (font) y escribir el script:

Acerca del símbolo del euro El carácter del euro no aparece en todas las codificaciones, y no siempre está en la misma posición: Codificación

Posición

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 reproducción, 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 codificación ISO-8859-1 está muy extendida, pero no incluye el símbolo del euro. Si se necesita, la solución más simple consiste en usar cp1252 o ISO-8859-15, que son prácticamente iguales pero contienen el preciado símbolo. Reduciendo el tamaño 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 compresión Zlib los reduce, pero continúan siendo bastante grandes. Existe una técnica para reducirlos aún más. Consiste en convertir la fuente a formato Type1 con ttf2pt1 especificando la codificación requerida; todos los demás caracteres serán omitidos. Por ejemplo, la fuente arial.ttf que viene con Windows Vista tiene un tamaño de 748 KB (contiene 3381 caracteres). Después de comprimirla, pesa 411 KB. Convirtiéndose a Type1 manteniendo sólo los caracteres cp1250: ttf2pt1 -b -L cp1250.map c:\Windows\Fonts\arial.ttf arial Los archivos .map están en el directorio makefont del paquete. El proceso devuelve arial.pfn y arial.afm. El archivo arial.pfb ocupa sólo 57 KB, 53 KB después de comprimirlo. Es incluso posible ir más allá. Si sólo se está interesado en un subconjunto de la codificación (es probable no necesitar los 217 caracteres), se puede abrir el archivo .map y quitar las líneas que no interesen. Consecuentemente, el tamaño del archivo disminuirá. LECCION 13 Introducción a jpgraph jpGraph es una librería orientada por objetos para la creación de gráficos en PHP. Se debe tener instalado una versión de PHP 5.1 o superior (es lo recomendado aunque puede trabajar con PHP 4). No es necesario utilizar ninguna extensión, la librería 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 librería para producir gráficos en 2D para PHP5 (aunque existe una versión para PHP 4). El objetivo es simplificar la creación de los gráficos a través de código en PHP. La librería puede usarse por si sola o formar parte de un proyecto de desarrollo WEB. Con esta libre ría también es posible crear gráficos desde la línea de comandos en PHP (versión cli).

Versiones de la librería: "1.x.y" Diseñada para PHP4 y no es compatible con PHP5 ejecutándose en modo estricto. Debe ser utilizada en instalaciones antiguas con soporte PHP4. También debe ser utilizada si la librería GD instalada en el servidor de PHP es la GD 1.x (la librería GD contiene las funciones gráficas de bajo nivel en PHP). Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

39

Manual Mca024 "3.x.y" Es la version actual y diseñada para trabajar en PHP5. El código se encuentra optimizada para tanto PHP5 como para la librería GD 2.x.

"3.x.y-p" (versión profesional) Es la version 3.x.y con las características no disponibles en la version libre. Incluye tipos adicionales de gráficos como códigos de barra 1D y 2D. Propósito y Uso El objetivo es disponer de una capa de abstración de la librería GD permitiendo crear gráficos en PHP con una librería de clases ofreciendo programación de alto nivel.

Ejemplo

El resultado producido es:

Pre-requisitos para utilizar la librería

 

PHP5 La extensión GD 2.x instalanda

LECCION 14 Características de jpgraph Entre las características principales se puede mencionar:

   

18 tipos de gráficos base – cada uno de ellos con múltiples variaciones Bien documentada – un manual de referencia de más de 700 páginas Totalmente escrita en PHP – capacidad de multi plataforma Diseño orientado por objetos limpio, facilitando el uso del API

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

41

Manual Mca024

Características de la librería

         

Formatos de imágenes PNG, GIF, JPG

                      

Número ilimitado de plots en un gráfico

Escalas flexibles text-lin, text-log, lin-lin, lin-log, log-lin ,log-log y enteras Cache de los gráficos generados. Modo batch para generar imágenes en archivos Mapas de imágenes en los clientes, permitiendo drill down. Auto escala. Escala manual con gran control a nivel de ticks. Múltiples ejes Y y escalas en el mismo gráfico Imagenes en el fondo del gráfico 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. Diseño orientado por objetos permitiendo extender la librería creando nuevos plots Generación automática de leyendas Rejillas en los ejes horizontales y verticales Rotación de los gráficos lineales Más de 400 colores con nombre Diseño modular, solo se incluyen las clases necesarias Códigos de barras 1D (EAN-128, ...) Plots rosa de los vientos (brújulas) Pies de páginas y títulos Colores alpha blending Interpolación con splines cúbicos Estilos de llenado de los plots Efectos 3D Marcadores con imágenes Cálculo de regresión lineal Texto en gráficos Control de errores Incorpora las banderas de 200 países las cuales pueden usar como marcadores. Conjuntos de carecteres en Chino y Japonés Fuentes TTF Plots de contornos en 2D y 3D Ilimitado número de puntos de datos

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

42

Manual Mca024

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

43

Manual Mca024 LECCION 15 Clases jpgraph La librería tiene más de 100 clases , a continuación se indican las primeras 30. La documentación completa se encuentra en http://jpgraph.net/download/manuals/classref/index.html

CLASE

DESCRIPCIÓN

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

Estándar plot de barras vertical

6.

Bezier

Interpolación 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 gráfico

19. ErrMsgText

Trabajar con mensajes de errores

20. ErrorLinePlot

Plot Línea de Errores

21. ErrorPlot

Plot de Errores

22. FieldArrow

Flecha en un Plot de Campo

23. FieldPlot

Plot de Campo

24. Footer

Pie de página de los gráficos

25. FuncGenerator

Utilitario para generar los plots de funciones

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

44

Manual Mca024 26. GanttActivityInfo

Actividades de un diagrama de gantt

27. GanttBar

Barra de actividades

28. GanttGraph

Gráfico de Gantt

29. GanttPlotObject

Plot de Gantt

30. GanttScale

Escala de Gannt

Distribución de los fuentes Todos los archivos php ofreciendo las clases de graficación inician con el prefijo jpgraph_ ; por ejemplo los plots de líneas se encuentran en el archivo jpgraph_line.php. El contenido del archivo comienza con

Barras

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

47

Manual Mca024

Tortas

Otros

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

49

Manual Mca024 Ejemplo de plot stock

Ejemplo de un contour

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

50

Manual Mca024

LECCION 17 Manejo de escalas en los ejes Elementos comunes a todos los tipos de gráficos

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

52

Manual Mca024 Elementos comunes a todos los tipos de gráfico de Pie

Diferentes tipos de escalas La escala de los ejes de los gráficos es controlada por el método SetScale de la clase Graph Graph::SetScale() el cual puede tomar cualquiera de los siguientes strings como parámetro : "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 logarítmica (”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 meétodo Axis::SetLabelFormatString() . El formato del string es interpretado de acuerdo al segundo parámetro. Si este parámetro es "true" el string de formato será asumido a manejar una fecha como se maneja la función date().



Especificando una función callback. La función o método 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 números es agregar la función de PHP number_format() como callback en el eje y. $graph->yaxis->SetLabelFormatCallback('number_format');

Todos los derechos reservados, prohibida la reproducción, 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 código multiplica por -1 todos los valores de Y

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 gráfico 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 método Axis::SetTickLabels(). Escalas de tipo Fechas Escala "dat" Todos los derechos reservados, prohibida la reproducción, 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 Automático de la escala Por defecto la escala es determinada automáticamente. Existen dos modos para manualmente ajustar las escalas. Especificación de valores min/max para la escala, pero lo s tick marks son determinados automáticamente. En este caso se utiliza el método SetScale() indicandole los máximos y los mínimos 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 continuación se muestra un ejemplo. $graph->SetScale('intlin',0,0,-10,20); El eje Y se escala automáticamente, 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 automáticamente $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 automáticas Scale::SetAutoMin() $graph->yaxis->scale->SetAutoMin(0); Coloca el valor mínimo de Y a mostrar en 0

Scale::SetAutoMax() $graph->xaxis->scale->SetAutoMax(1000); Coloca el máximo 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 simbólicos TICKD_DENSE TICKD_NORMAL TICKD_SPARSE TICKD_VERYSPARSE

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

56

Manual Mca024 Por defecto todas las escalas son fiajdas en TICKD_NORMAL Manualmente se puede especificar el tamaño 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 mayoría de los métodos para ajustar los colores (con una excepción básica) para todos los objetos en el gráfico 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('[email protected]'), rojo ligeramente transparente

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

57

Manual Mca024 SetFillColor('[email protected]'), 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('[email protected]:1.2'), Un rojo altamamente transparente y ligeramente brillante SetFillColor('#[email protected]:1.5'), Un azul brillante semi transparente LECCION 19

gd1 y gd2 en php como soporte

La versión de la librería 5.x requiere tener instalada la extensión gd2. La versión “deprecated” 4.x utiliza la extensión gd1. Para ver la versión de la extensión gd instalada se utiliza la función de PHP phpinfo();

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

58

Manual Mca024

En esta extensión se detallan los tipos de gráficos soportados. LECCION 20 Manejo de leyendas y títulos Los ejes x y y de cada gráfico además de las escala, tienen asociados leyendas, etiquetas, títulos, 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 título 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 reproducción, 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 título o Axis::SetTitle($aTxt) o Axis::SetTitleMargin($aMargin) o Axis::SetTitleSide($aSide) o Axis::SetColor($aColor,$aLabelColor) Ajustando la posición y el layout de la leyenda En jpgraph existen tres modos de formatear y colocar la leyenda. 1. 2. 3.

Ajustando los parámetros básicos 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. Ajustando la posición de la leyenda en el gráfico. Ajustando el número de columnas que debe ser utilizado para la diagramación interna de la caja de la leyenda. Por defecto la leyenda utiliza una columna.

La siguiente figura muestra unos ejemplos de cómo colocar las leyendas.

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

60

Manual Mca024

La manera como una leyenda se coloca es a través de los siguientes métodos Legend::SetPos($aX,$aY,$aHAlign='right',$aVAlign='top') Legend::SetAbsPos($aX,$aY,$aHAlign='right',$aVAlign='top') El primer método especirica la posición en fracción del ancho y del alto, mientras el segundo indica la posición 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 parámetros de ambos métodos. A continuación se muestra un ejemplo $graph->legend->SetPos(0.5,0.98,'center','bottom'); El layout de la caja de la leyenda también puede ser ajustado indicando el número de columnas que la leyenda utilizará. Por defecto, una columna es utilizada. Legend::SetColumns($aNbr) El siguiente ejemplo muestra leyendas con varios números de columnas.

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

61

Manual Mca024

LECCION 21 Uso de fuentes ttf Agregando fuentes ttf personalizados Adicionalmente a las fuentes predefinidas, es posible fácilmente 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 métodos. Graph::SetUserFont1($aNormal,$aBold,$aItalic,$aBoldIt) (o el sinónimo SetUserFont() ) Graph::SetUserFont2($aNormal,$aBold,$aItalic,$aBoldIt) Graph::SetUserFont3($aNormal,$aBold,$aItalic,$aBoldIt) El argumento de estos métodos 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 parámetros a excepción de "$aNormal" son opcionales.

LECCION 22 Comparación 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 código abierto o uso educacional y una licencia JpGraph Professional License para uso comercial. La licencia profesional incluye características adicionales y soporte. En la página de descargas de JpGraph se pueden visualizar los diferentes tipos de licienciamiento y versiones

La versión profesional ofrece las siguientes características Módulo para el código de barras: Linear-Barcode, 2D-Barcode PDF417, 2D-Barcode datamatrix, QR-Code 2dimensional high capacity barcodes Módulos para el Odometer/Tachometer Módulos para Windrose (Rosa de los vientos) Visualización de matrices Gráficos similiares a las tablas de excel Soporte via email

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela

63