PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<method_existscpdf_add_annotation>
view the version of this page
Last updated: Sat, 19 Apr 2003

X. ClibPDF Funktionen

Einf�hrung

Mit der ClibPDF k�nnen Sie PDF-Dokumente mit PHP erstellen. Funktionalit�t und API der ClibPDF sind der PDFlib �hnlich. Diese Dokumentation sollten Sie zusammen mit dem ClibPDF-Handbuch lesen, weil letzteres diese Bibliothek viel ausf�hrlicher erkl�rt.

Die Namen vieler Funktionen in der ClibPDF, im PHP-Modul und in der PDFlib sind gleich. Au�er cpdf_open() nehmen alle Funktionen die Bezeichnung des Dokuments als ihren ersten Parameter.

Diese Bezeichnung wird gegenw�rtig nicht intern verwendet, weil ClibPDF die gleichzeitige Erzeugung mehrerer PDF-Dokumente nicht unterst�tzt. Da das Ergebnis nicht vorhersehbar ist, sollten Sie es am besten nicht einmal testen. Die Folgen, die das in einer multi-threaded Umgebung h�tte, kann ich nicht absch�tzen. Laut ClibPDF-Autor wird sich das in einer der n�chsten Versionen �ndern (als dieses geschrieben wurde, war Version 1.10 aktuell). Verwenden Sie das pdflib-Modul, wenn Sie diese Funktionalit�t ben�tigen.

Eine nette Eigenschaft der ClibPDF (und der PDFlib) ist die M�glichkeit, das PDF-Dokument vollst�ndig im Speicher zu erzeugen, ohne tempor�re Dateien zu verwenden. Sie bietet auch die M�glichkeit, Koordinaten in einer vordefinierten L�ngeneinheit zu �bergeben. Dies ist eine praktische F�higkeit, die bei Verwendung der PDFlib aber auch mit pdf_translate() simuliert werden kann.

Eine weitere nette Eigenschaft von ClibPDF ist die Tatsache, dass jede Seite jederzeit ge�ndert werden kann, selbst wenn schon eine neue Seite ge�ffnet wurde. Die Funktion cpdf_set_current_page() erlaubt es, die aktuelle Seite zu verlassen und mit den �nderungen einer anderen Seite fortzufahren.

Die meisten Funktionen sind ziemlich einfach zu benutzen. Der schwierigste Teil ist wahrscheinlich die Erzeugung eines sehr einfachen PDF-Dokuments �berhaupt. Das folgende Beispiel sollte f�r Sie eine gute Starthilfe sein. Es erzeugt ein Dokument mit einer Seite. Die Seite enth�lt den Umriss des Textes "Times-Roman" in 30-Punkt-Schrift. Der Text ist unterstrichen.

Anforderungen

Um die ClibPDF-Funktionen benutzen zu k�nnen, m�ssen Sie das ClibPDF-Paket installieren. Es ist zum Herunterladen erh�ltlich von , aber f�r deren kommerzielle Verwendung ist es erforderlich, dass Sie eine Lizenz erwerben. F�r PHP wird cpdflib >= 2 ben�tigt.

Installation

Damit diese Funktionen zur Verf�gung stehen, m�ssen Sie PHP mit --with-cpdflib[=DIR] �bersetzen. DIR ist das cpdflib-Installationsverzeichnis, standardm��ig /usr. Zus�tzlich k�nnen Sie die jpeg- und tiff-Bibliotheken f�r die Verwendung durch ClibPDF angeben. Das erreichen Sie, indem Sie an ihre Konfigurationszeile die Optionen --with-jpeg-dir[=DIR] --with-tiff-dir[=DIR] anf�gen.

Laufzeit Konfiguration

Diese Erweiterung definiert keine Konfigurationseinstellungen in der php.ini.

Vordefinierte Konstanten

Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verf�gung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.

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)

Beispiele

Beispiel 1. Ein einfaches ClibPDF-Beispiel

<?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842, 1.0);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Seite 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, 750);
cpdf_end_text($cpdf);	
cpdf_moveto($cpdf, 50, 740);
cpdf_lineto($cpdf, 330, 740);
cpdf_stroke($cpdf);
cpdf_finalize($cpdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($cpdf);
cpdf_close($cpdf);
?>

Die pdflib-Distribution enth�lt ein komplexeres Beispiel, das eine Reihe von Seiten mit einer Analoguhr erzeugt. Hier ist dieses Beispiel, das unter Verwendung der ClibPDF-Erweiterung in PHP konvertiert wurde:

Beispiel 2. pdfclock-Beispiel der pdflib 2.0 Distribution

<?php
$radius = 200;
$margin = 20;
$pagecount = 40;

$pdf = cpdf_open(0);
cpdf_set_creator($pdf, "pdf_clock.php3");
cpdf_set_title($pdf, "Analog Clock");
  
while($pagecount-- > 0) {
  cpdf_page_init($pdf, $pagecount+1, 0, 2 * ($radius + $margin), 2 * ($radius + $margin), 1.0);
  
  cpdf_set_page_animation($pdf, 4, 0.5, 0, 0, 0);  /* wipe */
  
  cpdf_translate($pdf, $radius + $margin, $radius + $margin);
  cpdf_save($pdf);
  cpdf_setrgbcolor($pdf, 0.0, 0.0, 1.0);
  
  /* minute strokes */
  cpdf_setlinewidth($pdf, 2.0);
  for ($alpha = 0; $alpha < 360; $alpha += 6)
    {
    cpdf_rotate($pdf, 6.0);
    cpdf_moveto($pdf, $radius, 0.0);
    cpdf_lineto($pdf, $radius-$margin/3, 0.0);
    cpdf_stroke($pdf);
    }
  
  cpdf_restore($pdf);
  cpdf_save($pdf);
 
  /* 5 minute strokes */
  cpdf_setlinewidth($pdf, 3.0);
  for ($alpha = 0; $alpha < 360; $alpha += 30)
  {
    cpdf_rotate($pdf, 30.0);
    cpdf_moveto($pdf, $radius, 0.0);
    cpdf_lineto($pdf, $radius-$margin, 0.0);
    cpdf_stroke($pdf);
  }

  $ltime = getdate();

  /* draw hour hand */
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['minutes']/60.0) + $ltime['hours'] - 3.0) * 30.0);
  cpdf_moveto($pdf, -$radius/10, -$radius/20);
  cpdf_lineto($pdf, $radius/2, 0.0);
  cpdf_lineto($pdf, -$radius/10, $radius/20);
  cpdf_closepath($pdf);
  cpdf_fill($pdf);
  cpdf_restore($pdf);

  /* draw minute hand */
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['seconds']/60.0) + $ltime['minutes'] - 15.0) * 6.0);
  cpdf_moveto($pdf, -$radius/10, -$radius/20);
  cpdf_lineto($pdf, $radius * 0.8, 0.0);
  cpdf_lineto($pdf, -$radius/10, $radius/20);
  cpdf_closepath($pdf);
  cpdf_fill($pdf);
  cpdf_restore($pdf);

  /* draw second hand */
  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, -$radius/5, 0.0);
  cpdf_lineto($pdf, $radius, 0.0);
  cpdf_stroke($pdf);
  cpdf_restore($pdf);

  /* draw little circle at center */
  cpdf_circle($pdf, 0, 0, $radius/30);
  cpdf_fill($pdf);

  cpdf_restore($pdf);

  cpdf_finalize_page($pdf, $pagecount+1);
}

cpdf_finalize($pdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($pdf);
cpdf_close($pdf);
?>

Siehe auch

Siehe auch die Dokumentation der PDFlib-Erweiterung.

Inhaltsverzeichnis
cpdf_add_annotation -- F�gt eine Anmerkung ein
cpdf_add_outline --  F�gt ein Lesezeichen f�r die aktuelle Seite hinzu
cpdf_arc -- Zeichnet einen Kreisbogen
cpdf_begin_text -- Beginnt einen Textabschnitt
cpdf_circle -- Zeichnet einen Kreis
cpdf_clip --  Beschr�nkt alle Zeichnungen auf den aktuellen Pfad
cpdf_close -- Schlie�t ein PDF-Dokument
cpdf_closepath_fill_stroke --  Schlie�t, f�llt und zeichnet den aktuellen Pfad
cpdf_closepath_stroke --  Schlie�t einen Pfad und zeichnet eine Linie entlang des Pfades
cpdf_closepath -- Schlie�t den aktuellen Pfad
cpdf_continue_text -- Gibt den Text in der n�chsten Zeile aus
cpdf_curveto -- Zeichnet eine Kurve
cpdf_end_text -- Beendet einen Textabschnitt
cpdf_fill_stroke --  F�llt und zeichnet den aktuellen Pfad
cpdf_fill -- F�llt den aktuellen Pfad
cpdf_finalize_page -- Beendet eine Seite
cpdf_finalize -- Beendet ein Dokument
cpdf_global_set_document_limits --  Setzt Beschr�nkungen f�r alle PDF-Dokumente
cpdf_import_jpeg -- �ffnet ein JPEG-Bild
cpdf_lineto -- Zeichnet eine Linie
cpdf_moveto -- Legt die aktuelle Position fest
cpdf_newpath -- Beginnt einen neuen Pfad
cpdf_open -- �ffnet ein neues PDF-Dokument
cpdf_output_buffer --  Gibt das PDF-Dokument aus dem Zwischenspeicher aus
cpdf_page_init -- Beginnt eine neue Seite
cpdf_place_inline_image -- Platziert ein Bild auf der Seite
cpdf_rect -- Zeichnet ein Rechteck
cpdf_restore --  Stellt die zuvor gesicherte Umgebung wieder her
cpdf_rlineto -- Zeichnet eine Linie (relativ)
cpdf_rmoveto -- Legt die relative aktuelle Position fest
cpdf_rotate_text --  Legt den Drehwinkel f�r Text fest
cpdf_rotate -- Legt den Drehwinkel fest
cpdf_save_to_file -- Schreibt ein PDF-Dokument in eine Datei
cpdf_save -- Sichert die aktuelle Umgebung
cpdf_scale -- Legt die Vergr��erung fest
cpdf_set_action_url --  Setzt einen Hyperlink
cpdf_set_char_spacing -- Legt den Zeichenabstand fest
cpdf_set_creator -- Setzt das Urheberfeld des PDF-Dokuments
cpdf_set_current_page -- Setzt die aktuelle Seite
cpdf_set_font_directories --  Legt die Verzeichnisse fest, die bei Verwendung externer Schriftarten durchsucht werden
cpdf_set_font_map_file --  Legt bei Verwendung externer Schriftarten die Datei mit den Schriftart-Dateiname-Zuordnungen fest
cpdf_set_font -- W�hlt die aktuelle Schriftart und -gr��e
cpdf_set_horiz_scaling -- Setzt die horizontale Textskalierung
cpdf_set_keywords --  Setzt das Schl�sselwortfeld des PDF-Dokuments
cpdf_set_leading -- Setzt den Zeilenabstand
cpdf_set_page_animation --  Legt den �bergang zwischen den Seiten fest
cpdf_set_subject -- Setzt das Themenfeld des PDF-Dokuments
cpdf_set_text_matrix -- Legt die Text-Matrix fest
cpdf_set_text_pos -- Legt die Textposition fest
cpdf_set_text_rendering -- Legt fest, wie Text wiedergegeben wird
cpdf_set_text_rise -- Legt die vertikale Textverschiebung fest
cpdf_set_title -- Setzt das Titelfeld PDF-Dokuments
cpdf_set_viewer_preferences --  Legt fest, wie das Dokument im Betrachter dargestellt wird
cpdf_set_word_spacing --  Legt den Abstand zwischen den W�rtern fest
cpdf_setdash -- Setzt eine gestrichelte Linie
cpdf_setflat -- Legt die Flachheit fest
cpdf_setgray_fill -- Setzt die F�llfarbe auf einen Grauwert
cpdf_setgray_stroke -- Setzt die Zeichenfarbe auf einen Grauwert
cpdf_setgray --  Setzt Zeichen- und F�llfarbe auf einen Grauwert
cpdf_setlinecap -- Legt den Typ der Linienenden fest
cpdf_setlinejoin -- Legt den Typ der Linienverbindungen fest
cpdf_setlinewidth -- Legt die Linienbreite fest
cpdf_setmiterlimit -- Legt die Gehrungsbegrenzung fest
cpdf_setrgbcolor_fill --  Setzt die F�llfarbe auf einen RGB-Farbwert
cpdf_setrgbcolor_stroke --  Setzt die Zeichenfarbe auf einen RGB-Farbwert
cpdf_setrgbcolor --  Setzt Zeichen- und F�llfarbe auf einen RGB-Farbwert
cpdf_show_xy -- Gibt Text an der angegebenen Position aus
cpdf_show -- Gibt Text an der aktuellen Position aus
cpdf_stringwidth --  Liefert die Breite einer Zeichenkette in der aktuellen Schriftart
cpdf_stroke --  Zeichnet eine Linie entlang des aktuellen Pfades
cpdf_text -- Gibt den Text mit Parametern aus
cpdf_translate --  Legt den Ursprung des Koordinatensystems fest


User Contributed Notes
ClibPDF Funktionen
add a note
daniel[at]lorch.cc
22-Feb-2002 12:50

If you don't want to pay for the library or your hoster does not have it installed, have a look at "PHP pdf Class":


egrebNOSPAM at trivini dot com
04-Sep-2002 09:13

As of version 2.02-r1-1, ClibPDF claims to be multi-threaded-safe.
12-Mar-2003 02:33
You could also use FPDF. Find it at this address:
sinaler at superonline dot com
26-Mar-2003 06:33

In your manual, the cpdf functions are missing or non-updated.

for example cpdf_textbox()....

puterasalji at yahoo dot com
07-Apr-2003 03:32

I've finally found a way to display text

<?php
$radius = 200;
$margin = 20;
$pagecount = 1;

$pdf = cpdf_open(0);

 cpdf_page_init($pdf, $pagecount+1, 0, 2 * ($radius + $margin), 2 * ($radius + $margin), 1.0);

 cpdf_translate($pdf, $radius + $margin, $radius + $margin);

 cpdf_begin_text($pdf);
cpdf_set_font($pdf, "Arial", 30, "NULL");
cpdf_set_text_rendering($pdf, 1);
 cpdf_text($pdf, "Yahoo!!", -198, 50);
 cpdf_end_text($pdf);

 /* minute strokes*/
 for ($alpha = 0; $alpha < 90; $alpha += 6)
  {
   cpdf_setrgbcolor($pdf,9.0,9.0,0.0);
   cpdf_rotate($pdf, 6.0);
   cpdf_moveto($pdf, $radius, 0.0);
   cpdf_lineto($pdf, $radius-$margin/3, 0.0);
   cpdf_stroke($pdf);

  }

cpdf_finalize($pdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($pdf);
cpdf_close($pdf);
?>

I'm not sure why, but the text appeared only after I've pasted the minute strokes draw function from clock.php example. I user the cpdf_translate to begin the x,y coordinate in the middle of the document

add a note

<method_existscpdf_add_annotation>
 Last updated: Sat, 19 Apr 2003
show source | credits | mirror sites 
Copyright © 2001-2003 The PHP Group
All rights reserved.
This mirror generously provided by: /
Last updated: Mon May 12 21:12:21 2003 CEST