XIII. Funciones ClibPDF

Introducción

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ído 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 éstas 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.

Nota: This extension has been moved to the PECL repository and is no longer bundled with PHP as of PHP 5.1.0.

Nota: Si está interesado en generadores de PDF gratuitos alternativos que no usen bibliotecas PDF externas, vea este FAQ relacionado.

Requirimientos

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.

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.

CPDF_PM_NONE (integer)

CPDF_PM_OUTLINES (integer)

CPDF_PM_THUMBS (integer)

CPDF_PM_FULLSCREEN (integer)

CPDF_PL_SINGLE (integer)

CPDF_PL_1COLUMN (integer)

CPDF_PL_2LCOLUMN (integer)

CPDF_PL_2RCOLUMN (integer)

Ejemplos

Ejemplo 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:

Ejemplo 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&aacute;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 pequenyo circulo 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.

Tabla de contenidos
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

Hosting by: hurra.com
Generated: 2007-01-26 18:01:04