1. Introducción |
2. Para que sirve |
3. Instrucciones de uso |
4. Licencia y condiciones |
La librería JLPDF se realizó para cubrir una necesidad propia de contar con una función tipo MultiCell con la capacidad de justificar un texto pero adicionalmente poder utilizar texto formateado o enriquecido, es decir, poder poner dentro del texto justificado negritas, colores, tipos de letra, subrayados, etc.
Estas funciones no las tiene el MultiCell, ni niguna otra función de impresión de textos, de todas las que nos proporciona la librería FPDF, y después de analizar todos los ejemplos y scripts publicados en el sitio y revisar las ligas publicadas, llegamos a la conclusión de que no existía una función así.
Ciertamente hay varias implementaciones muy buenas e interesantes como son aquellas que pretenden Convertir de HTML a PDF pero con resultados muy pobres ya que ninguna de ellas combina nuestras dos necesidades: Texto justificado y Formato enriquecido.
Por ese motivo nos dimos a la tarea de realizarla con un muy aceptable resultado. Y en este momento lo publicamos en este sitio con la intención de aportar a la comunidad de desarrolladores de software libre una sencilla herramienta que en lo particular nos ha facilitado varias tareas en lo que a reportes se refiere.
Presentamos la clase tal como la utilizamos y pretendemos, posteriormente, irla mejorando con ayuda de la comunidad de programadores y visitantes de elticus.com
La librería JLPDF sirve para facilitar la realización de documentos en PDF desde el lenguaje PHP de una forma simple e intuitiva, pudiendo utilizar formatos de Negritas, Subrayado, Cursivas, Tipos de letra, Tamaños de fuentes, Colores o combinaciones de estos, conservando la alineación e incluso utilizar texto Justificado o centrado de manera transparente, tal como se hace al escribir código en HTML básico.
Esta librería cumple con los parámetros estáblecidos por el FPDF, por lo que puede combinarse con otras librerías para, de este modo, poder incorporala a las funciones de dominio público que están publicadas en el sitio http://fpdf.org
JLPDF está basada en la popular librería FPDF (de hecho, está heredada de ella) por lo que para utilizarla es necesario descargar e instalar dicha librería desde el sitio oficial de distribución.
FPDF es un software "freeware" es decir, es totalmente gratuito tanto para aplicaciones comerciales como públicas, por lo que puede uno descargarla y utilizarla con toda confianza. JLPDF también lo es.
Cuando ya hallamos conseguido e instalado el FPDF, copiaremos el archivo JLPDF.PHP en la misma carpeta. A partir de ahí ya podremos "instanciarlo" tal como se muestra en el siguiente código:
<?PHP /* definimos la ruta de las fuentes*/ define('FPDF_FONTPATH','font/'); /* Incorporamos la librería */ require('jlpdf.php'); ... /* Generamos una instancia para comenzar a utilizarla */ $pdf=new JLPDF(); ?>
Al ser JLPDF una clase heredada de FPDF, cuenta con la posibilidad de hacer uso de todas sus funciones, por lo que podemos reutlizar el código realizado para FPDF sin problemas.
JLPDF cuenta con una Función para Impresión de Texto Enriquecido que funciona de
la siguiente manera:
function JLCell($txt, $ANCHO, $alineacion)
$txt | Texto a imprimir codificado de acuerdo a las reglas que se explica en las tablas de formato que se presentan más adelante. |
$ANCHO | Ancho de la celda de datos. En la unidad de medida establecida para el documento. |
$alineacion | Cadena que especifica la alineación del texto. Puede ser: |
'j' para justificado 'l' para alineado a la izquierda 'r' para alineado a la derecha 'c' para centrado |
<?PHP /* definimos la ruta de las fuentes*/ define('FPDF_FONTPATH','font/'); /* Incorporamos la librería */ require('jlpdf.php'); /* Texto que se va a imprimir */ $cadena= "Un [blue]elefante[black] se columpiaba sobre la tela de una [BIG]araña[normal]. "; $cadena.= "Como veía que resistía, fue a llamar a [red]otro elefante[black]. "; $cadena.= "[b]Dos elefantes[/b] se columpiaban sobre la [i]tela de una araña[/i]. "; $cadena.= "[times]Como veían que resistía, fueron a llamar a otro elefante."; /* Generamos una instancia para comenzar a utilizarla */ $pdf=new JLPDF(); $pdf->AddPage(); $pdf->SetFont('Arial','',12); /* Nos posicionamos en la posició 0,10 */ $pdf->SetX(0); $pdf->SetY(10); /* Texto en una columna de 100 puntos de ancho, justificada */ $pdf->JLCell("$cadena",100,'j'); $pdf->Output(); ?>
Como seguramente podremos apreciar, en la cadena de texto se incorporaron una serie de "comandos" o meta-instrucciones como por ejemplo "[blue]" que activa el color azul, o "[b]" que activa el modo de negritas y todo está perfectamente justificado aún cuando los formatos cambian el tamaño del texto o incluso la fuente.
Comando | Efecto | Ejemplo de utilización | Resultado |
---|---|---|---|
[b] [/b] | Activa y desactiva el modo de NEGRITAS respectivamente | En [b]Colima[/b] si saben como masca la iguana | En Colima si saben como masca la iguana |
[i] [/i] | Activa y desactiva el modo de CURSIVA (itálica) respectivamente | Los [i]Altos de Jalisco[/i] no pasan del metro ochenta | Los Altos de Jalisco no pasan del metro ochenta |
[u] [/u] | Activa y desactiva el modo de SUBRAYADO respectivamente | Los [u]chihuahueños[/u] son de [u]Chihuahua[/u]. | Los chihuahueños son de Chihuahua. |
Observaciones: Pueden usarse combinados de manera similar a como cuando se formatea texto en HTML. Es decir, se puede poner negritas, subrayados e italicas en conjunto o cruzados. Ejemplo: Resultado (aparecerá justificado): |
Comando | Efecto | Ejemplo de utilización | Resultado |
---|---|---|---|
[red] | Cambia el color de la letra a ROJO | [red]Esto está muy colorado | Esto está muy colorado |
[blue] | Cambia el color de la letra a AZUL | [blue]Azul como el cielo | Azul como el cielo |
[green] | Cambia el color de la letra a VERDE | [green]Los verdes bosques de Chiapas | Los verdes bosques de Chiapas |
[black] | Cambia el color de la letra a NEGRO (Se utiliza también para desactivar los otros colores) | [black]Negro como mi suerte | Negro como mi suerte |
Observaciones: Nótese que estos comandos no incluyen el comando de "cierre" , es decir, no existe un [/red], por lo que es preciso utilizar el color negro para quitar un color. Tambien se puede destacar que fueron implementados solamente estos cuatro colores a manera de DEMO, pero es sumamente fácil incrementarlo para añadir los que sea necesario siempre que se conozca el RGB correspondiente. |
Comando | Efecto | Ejemplo de utilización | Resultado |
---|---|---|---|
[BIG] | Cambia el tamaño de la fuente a un puntaje más alto (Tamaño equivalente a font size 14) | El maestro Zen gritó: [BIG]Que tonterías estás diciendo! | El maestro Zen gritó: Que tonterías estás diciendo! |
[small] | Cambia el tamaño de la fuente a un puntaje más bajo (Tamaño equivalente a font size 10) | Y le dijo al oido: [small] Corre y avisa al padrino | Y le dijo al oido: Corre y avisa al padrino |
[normal] | Cambia el tamaño de la fuente al puntaje original (Tamaño equivalente a font size 12) | [normal] Y con serenidad lo miró fijamente | Y con serenidad lo miró fijamente |
Observaciones: Nótese que estos comandos no incluyen el comando de "cierre" , es decir, no existe un [/BIG], por lo que es preciso utilizar el comando [normal] para desactivarlo. Además, los comandos son sensibles a mayúsculas, por lo que deben ser escritos tal como se indica o de lo contrario no funcionarán. |
Comando | Efecto | Ejemplo de utilización | Resultado |
---|---|---|---|
[arial | Selecciona el tipo de letra Arial | [arial] En 1519, los españoles llegaron a lo que hoy es México, tocando tierra en la isla de Cozumel | En 1519, los españoles llegaron a lo que hoy es México, tocando tierra en la isla de Cozumel |
[courier] | Selecciona el tipo de letra Courier New | [courier] Los líderes insurgentes fueron fusilados y sus cabezas expuestas en Guanajuato | Los líderes insurgentes fueron fusilados y sus cabezas expuestas en Guanajuato |
[times] | Selecciona el tipo de letra Times new roman | [times] Morelos convocó al primer congreso americano en 1813 | Morelos convocó al primer congreso americano en 1813 |
[helvetica] | Selecciona el tipo de letra Elvética | [helvetica] El más largo de los ríos mexicanos es el Bravo, de la vertiente del Golfo | El más largo de los ríos mexicanos es el Bravo, de la vertiente del Golfo |
Observaciones: Nótese que estos comandos no incluyen el comando de "cierre" , es decir, no existe un [/times], por lo que si se desea cancelar un tipo de fuente, debe ser reemplazado por otro. Además, los comandos son sensibles a mayúsculas, por lo que deben ser escritos tal como se indica o de lo contrario no funcionarán. |