Funciones ClibPDF [obsoletas]
Introducción
El soporte de ClibPDF ha sido abandonado y se recomienda a los usuarios el uso de una alternativa, como Haru, PDFlib, o una de las alternativas PHP disponibles.
ClibPDF le permite crear documentos PDF con PHP. La funcionalidad y la interfaz de programación de ClibPDF son similares a PDFlib. Esta documentación deberÃa ser leÃda junto con el manual de ClibPDF, ya que éste explica la biblioteca con mucho mayor detalle.
Muchas funciones en la biblioteca ClibPDF nativa y el módulo PHP, asà como en PDFlib, tienen el mismo nombre. Todas las funciones excepto por cpdf_open() reciben el gestor del documento como su primer parámetro.
Actualmente este gestor no es usado internamente ya que ClibPDF no soporta la creación de varios documentos PDF a la vez. De hecho, no deberÃa intentarlo siquiera, los resultados son impredecibles. Es difÃcil hacerse una idea de las consecuencias que representarÃa en un entorno multi-hilos. De acuerdo al autor de ClibPDF, esto cambiará en uno de los lanzamientos siguientes (la versión actual cuando se escribieron estas lÃneas es 1.10). Si necesita esta funcionalidad, use el módulo pdflib.
Una caracterÃstica interesante de ClibPDF (y PDFlib) es la habilidad de crear el documento pdf completamente en memoria sin usar archivos temporales. También provee la habilidad de pasar coordenadas en una unidad de longitud predefinida. (Esta caracterÃstica puede ser simulada también por pdf_translate() cuando se usan las funciones PDFlib.)
Otra caracterÃstica interesante de ClibPDF es el hecho de que cualquier página puede ser modificada en cualquier momento, incluso si una nueva página ya ha sido abierta. La función cpdf_set_current_page() permite abandonar la página actual y posiblemente modificar otra página.
La mayorÃa de funciones son razonablemente fáciles de usar. La parte más difÃcil es probablemente la creación misma de un documento PDF muy sencillo. El ejemplo presentado a continuación deberÃa ayudarlo a iniciar. En éste se crea un documento con una página. La página contiene el texto "Times-Roman" en una fuente tipográfica de borde exterior y 30pt. El texto es subrayado.
Note: This extension has been moved to the » PECL repository and is no longer bundled with PHP as of PHP 5.1.0.
Note: Si está interesado en generadores de PDF gratuitos alternativos que no usen bibliotecas PDF externas, vea este FAQ relacionado.
Requisitos
Para poder usar las funciones ClibPDF necesita instalar el paquete ClibPDF. Éste se encuentra disponible para su descarga en » FastIO, pero requiere que compre una licencia para su uso comercial. PHP requiere que usted use cpdflib >= 2. El desarrollo de la biblioteca ClibPDF ha sido descontinuado, de modo que el sitio web de FastIO probablemente se encuentre inaccesible.
Instalación
Para poder utilizar estas funciones, se debe compilar PHP con la siguiente opción de configuración --with-cpdflib[=DIR]. DIR se refiere al directorio de instalación de cpdflib, cuyo valor por defecto es /usr. Además, si se requiere que ClibPDF haga uso de las librerÃas JPEG y TIFF, se deben añadir también las siguientes opciones --with-jpeg-dir[=DIR] y --with-tiff-dir[=DIR].
Configuración en tiempo de ejecución
Esta extensión no tiene directivas de configuración en php.ini.
Constantes predefinidas
Estas constantes están definidas por esta extensión y estarán disponibles solamente cuando la extensión ha sido o bien compilada dentro de PHP o grabada dinámicamente en tiempo de ejecución.
Ejemplos
Example#1 Ejemplo Simple de ClibPDF
<?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842, 1.0);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Pag. 1");
cpdf_begin_text($cpdf);
cpdf_set_font($cpdf, "Times-Roman", 30, "WinAnsiEncoding");
cpdf_set_text_rendering($cpdf, 1);
cpdf_text($cpdf, "Times Roman outlined", 50, 50);
cpdf_end_text($cpdf);
cpdf_moveto($cpdf, 50, 50);
cpdf_lineto($cpdf, 740, 330);
cpdf_stroke($cpdf);
cpdf_finalize_page($cpdf, 1);
cpdf_finalize($cpdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($cpdf);
cpdf_close($cpdf);
?>
La distribución de pdflib contiene un ejemplo más complejo que genera una serie de páginas con un reloj análogo. Aquà está ese ejemplo convertido a PHP usando la extensión ClibPDF:
Example#2 Ejemplo pdfclock tomado de la distribución de pdflib 2.0
<?php
$radio = 200;
$margen = 20;
$conteo_paginas = 40;
$pdf = cpdf_open(0);
cpdf_set_creator($pdf, "pdf_clock.php");
cpdf_set_title($pdf, "Reloj Análogo");
while ($conteo_paginas-- > 0) {
cpdf_page_init($pdf, $conteo_paginas+1, 0, 2 * ($radio + $margen), 2 * ($radio + $margen), 1.0);
cpdf_set_page_animation($pdf, 4, 0.5, 0, 0, 0); /* limpiar */
cpdf_translate($pdf, $radio + $margen, $radio + $margen);
cpdf_save($pdf);
cpdf_setrgbcolor($pdf, 0.0, 0.0, 1.0);
/* trazos de los minutos */
cpdf_setlinewidth($pdf, 2.0);
for ($alpha = 0; $alpha < 360; $alpha += 6) {
cpdf_rotate($pdf, 6.0);
cpdf_moveto($pdf, $radio, 0.0);
cpdf_lineto($pdf, $radio-$margen/3, 0.0);
cpdf_stroke($pdf);
}
cpdf_restore($pdf);
cpdf_save($pdf);
/* trazos de 5 minutos */
cpdf_setlinewidth($pdf, 3.0);
for ($alpha = 0; $alpha < 360; $alpha += 30) {
cpdf_rotate($pdf, 30.0);
cpdf_moveto($pdf, $radio, 0.0);
cpdf_lineto($pdf, $radio-$margen, 0.0);
cpdf_stroke($pdf);
}
$ltime = getdate();
/* dibujar nuestra mano */
cpdf_save($pdf);
cpdf_rotate($pdf, -(($ltime['minutes']/60.0) + $ltime['hours'] - 3.0) * 30.0);
cpdf_moveto($pdf, -$radio/10, -$radio/20);
cpdf_lineto($pdf, $radio/2, 0.0);
cpdf_lineto($pdf, -$radio/10, $radio/20);
cpdf_closepath($pdf);
cpdf_fill($pdf);
cpdf_restore($pdf);
/* dibujar la mano de minutos */
cpdf_save($pdf);
cpdf_rotate($pdf, -(($ltime['seconds']/60.0) + $ltime['minutes'] - 15.0) * 6.0);
cpdf_moveto($pdf, -$radio/10, -$radio/20);
cpdf_lineto($pdf, $radio * 0.8, 0.0);
cpdf_lineto($pdf, -$radio/10, $radio/20);
cpdf_closepath($pdf);
cpdf_fill($pdf);
cpdf_restore($pdf);
/* dibujar la mano de segundos */
cpdf_setrgbcolor($pdf, 1.0, 0.0, 0.0);
cpdf_setlinewidth($pdf, 2);
cpdf_save($pdf);
cpdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0));
cpdf_moveto($pdf, -$radio/5, 0.0);
cpdf_lineto($pdf, $radio, 0.0);
cpdf_stroke($pdf);
cpdf_restore($pdf);
/* dibujar un pequeño cÃrculo en el centro */
cpdf_circle($pdf, 0, 0, $radio/30);
cpdf_fill($pdf);
cpdf_restore($pdf);
cpdf_finalize_page($pdf, $conteo_paginas+1);
}
cpdf_finalize($pdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($pdf);
cpdf_close($pdf);
?>
Ver también
Vea también la documentación de la extensión PDFlib.
Table of Contents
- cpdf_add_annotation — Añade una anotación
- cpdf_add_outline — Añade una marca en la página actual
- cpdf_arc — Dibuja un arco
- cpdf_begin_text — Inicializa una sección de texto
- cpdf_circle — Dibuja un cÃrculo
- cpdf_clip — Ajusta al camino actual
- cpdf_close — Cierra un documento PDF
- cpdf_closepath_fill_stroke — Cierra, llena y traza el camino actual
- cpdf_closepath_stroke — Cierra el camino y dibuja una lÃnea a lo largo del camino
- cpdf_closepath — Cierra el camino
- cpdf_continue_text — Pone texto en la lÃnea siguiente
- cpdf_curveto — Dibuja una curva
- cpdf_end_text — Finaliza una sección de texto
- cpdf_fill_stroke — LLena y traza el camino actual
- cpdf_fill — LLena el camino actual
- cpdf_finalize_page — Finaliza una página
- cpdf_finalize — Finaliza un documento
- cpdf_global_set_document_limits — Establece lÃmites para un documento pdf
- cpdf_import_jpeg — Abre una imagen JPEG
- cpdf_lineto — Dibuja una lÃnea
- cpdf_moveto — Define el punto actual
- cpdf_newpath — Comienza un nuevo camino
- cpdf_open — Abre un nuevo documento pdf
- cpdf_output_buffer — Pone el documento PDF en el buffer de memoria
- cpdf_page_init — Comienza una nueva página
- cpdf_place_inline_image — Situa una imagen en la página
- cpdf_rect — Dibuja un rectángulo
- cpdf_restore — Restaura un entorno guardado previamente
- cpdf_rlineto — Dibuja una lÃnea
- cpdf_rmoveto — Define el punto actual
- cpdf_rotate_text — Establece el ángulo de rotación de un texto
- cpdf_rotate — Define la rotación
- cpdf_save_to_file — Escribe el documento PDF en un archivo
- cpdf_save — Guarda el entorno actual
- cpdf_scale — Define la escala
- cpdf_set_action_url — Establece un hiperenlace
- cpdf_set_char_spacing — Determina el espacio entre caracteres
- cpdf_set_creator — Define el campo creator en el documento PDF
- cpdf_set_current_page — Define la página actual
- cpdf_set_font_directories — Indica los directorios en los que se deben buscar las fuentes externas
- cpdf_set_font_map_file — Indica el mapeo que se va a emplear para asociar el nombre de la fuente con el nombre del archivo cuando se emplean fuentes externas
- cpdf_set_font — Selecciona la fuente y el tamaño actual
- cpdf_set_horiz_scaling — Define la escala horizontal del texto
- cpdf_set_keywords — Pone el valor del campo 'keywords'(palabras clave) de un documento PDF
- cpdf_set_leading — Define la distancias entre las lÃneas de texto
- cpdf_set_page_animation — Define el intervalo entre páginas
- cpdf_set_subject — Define el valor del campo subjet de un documento PDF
- cpdf_set_text_matrix — Define la matriz de texto
- cpdf_set_text_pos — Define la posición del texto
- cpdf_set_text_rendering — Determina cómo es presentado el texto
- cpdf_set_text_rise — Define la elevación del texto
- cpdf_set_title — Define el campo title de un documento PDF
- cpdf_set_viewer_preferences — Modo de visualización del documento en el visor
- cpdf_set_word_spacing — Define el espacio entre palabras
- cpdf_setdash — Define el patrón de la raya
- cpdf_setflat — Define la monotonÃa
- cpdf_setgray_fill — Pone el color de relleno al valor gris
- cpdf_setgray_stroke — Define el color para dibujar al valor gris
- cpdf_setgray — Pone el color de relleno y dibujo a gris
- cpdf_setlinecap — Define el parámetro linecap
- cpdf_setlinejoin — Define el parámetro linejoin
- cpdf_setlinewidth — Define la anchura de la lÃnea
- cpdf_setmiterlimit — Define el lÃmite del inglete
- cpdf_setrgbcolor_fill — Pone el color de relleno al valor de color rgb
- cpdf_setrgbcolor_stroke — Pone el color de dibujo al valor de color rgb
- cpdf_setrgbcolor — Pone el color de relleno y dibujo al valor de color rgb
- cpdf_show_xy — Muestra texto en la posición indicada
- cpdf_show — Muestra el texto en la posición actual
- cpdf_stringwidth — Devuelve la anchura del texto en la fuente actual
- cpdf_stroke — Dibuja una lÃnea a lo largo del camino
- cpdf_text — Muestra texto con parámetros
- cpdf_translate — Define el sistema de origen de coordenadas