Forum und email

Funciones ClibPDF [obsoletas]

Introducción

Warning

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.

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

Example#1 Ejemplo Simple de ClibPDF

<?php
$cpdf 
cpdf_open(0);
cpdf_page_init($cpdf105958421.0);
cpdf_add_outline($cpdf0001"Pag. 1");
cpdf_begin_text($cpdf);
cpdf_set_font($cpdf"Times-Roman"30"WinAnsiEncoding");
cpdf_set_text_rendering($cpdf1);
cpdf_text($cpdf"Times Roman outlined"5050);
cpdf_end_text($cpdf);
cpdf_moveto($cpdf5050);
cpdf_lineto($cpdf740330);
cpdf_stroke($cpdf);
cpdf_finalize_page($cpdf1);
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+10* ($radio $margen), * ($radio $margen), 1.0);

  
cpdf_set_page_animation($pdf40.5000);  /* limpiar */

  
cpdf_translate($pdf$radio $margen$radio $margen);
  
cpdf_save($pdf);
  
cpdf_setrgbcolor($pdf0.00.01.0);

  
/* trazos de los minutos */
  
cpdf_setlinewidth($pdf2.0);
  for (
$alpha 0$alpha 360$alpha += 6) {
    
cpdf_rotate($pdf6.0);
    
cpdf_moveto($pdf$radio0.0);
    
cpdf_lineto($pdf$radio-$margen/30.0);
    
cpdf_stroke($pdf);
  }

  
cpdf_restore($pdf);
  
cpdf_save($pdf);

  
/* trazos de 5 minutos */
  
cpdf_setlinewidth($pdf3.0);
  for (
$alpha 0$alpha 360$alpha += 30) {
    
cpdf_rotate($pdf30.0);
    
cpdf_moveto($pdf$radio0.0);
    
cpdf_lineto($pdf$radio-$margen0.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/20.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.80.0);
  
cpdf_lineto($pdf, -$radio/10$radio/20);
  
cpdf_closepath($pdf);
  
cpdf_fill($pdf);
  
cpdf_restore($pdf);

  
/* dibujar la mano de segundos */
  
cpdf_setrgbcolor($pdf1.00.00.0);
  
cpdf_setlinewidth($pdf2);
  
cpdf_save($pdf);
  
cpdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0));
  
cpdf_moveto($pdf, -$radio/50.0);
  
cpdf_lineto($pdf$radio0.0);
  
cpdf_stroke($pdf);
  
cpdf_restore($pdf);

  
/* dibujar un pequeño círculo en el centro */
  
cpdf_circle($pdf00$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