Heim  >  Artikel  >  Backend-Entwicklung  >  So schreiben Sie einen PDF-Dokumentgenerator in PHP

So schreiben Sie einen PDF-Dokumentgenerator in PHP

WBOY
WBOYOriginal
2016-08-08 09:33:32994Durchsuche

So schreiben Sie einen PDF-Dokumentgenerator in PHP

Einer der größten Vorteile von PHP besteht darin, dass es sehr einfach ist, neue Technologien zu unterstützen. Die Erweiterbarkeit dieser Sprache ermöglicht es Entwicklern, problemlos neue Module hinzuzufügen, und die Unterstützung technischer Gruppen auf der ganzen Welt und die Unterstützung vieler Erweiterungsmodule machen PHP zu einem Kinderspiel hat sich zu einer der umfassendsten Web-Programmiersprachen entwickelt. Derzeit verfügbare Erweiterungsmodule ermöglichen Entwicklern die Durchführung von IMAP- und POP3-Vorgängen, die dynamische Generierung von Bildern und Shockwave-Flash-Animationen, die Durchführung einer Kreditkartenüberprüfung, die Ver- und Entschlüsselung sensibler Daten sowie die Analyse von Daten im XML-Format. Aber das ist noch nicht alles. Jetzt gibt es ein neues Modul, das an PHP gebunden werden kann, nämlich das PDFLib-Erweiterungsmodul, mit dem Entwickler dynamisch Dateien im PDF-Format (Adobe Portable Document Format) generieren können Sehen Sie sich zunächst an, wie Sie dieses Modul in PHP verwenden.

Damit PHP Dokumente im PDF-Format verarbeiten kann, müssen Sie zunächst die PDFLib-Erweiterungsbibliothek in Ihrem System installieren. Wenn Sie ein Lunix-System verwenden, können Sie sie von http://www.pdflib.com/pdflib/index herunterladen. Wenn Sie ein Windows-System verwenden, ist es noch einfacher, eine kompilierte PDFLib-Bibliothek herunterzuladen und dann die Kommentare der entsprechenden Zeilen in der PHP-Konfigurationsdatei zu entfernen.


extension=php_pdf.dll


Wenn es sich um dynamisches Laden handelt, können Sie auch auf den folgenden Befehl zurückgreifen:


dl("php_pdf.dll");


Darüber hinaus benötigen Sie einen Adobe Acrobat PDF-Reader, um das PDF-Format anzuzeigen. Wenn Sie keinen haben, können Sie ihn kostenlos von http://www.adobe.com/ herunterladen.

Sobald Sie die vorbereitenden Vorbereitungen getroffen haben, können Sie die PDF-Datei erstellen. Hier ist ein einfaches Beispiel:


//Erstelle ein neues PDF-Dokument-Handle

$pdf = PDF_new();


//Eine Datei öffnen

PDF_open_file($pdf, "PDFTest.pdf");


// Eine neue Seite beginnen (A4)

PDF_begin_page($pdf, 595, 842);


// Holen Sie sich das Schriftartobjekt und verwenden Sie es

$arial = PDF_findfont($pdf, "Arial", "host", 1);

PDF_setfont($pdf, $arial, 10);


//Text ausgeben

PDF_show_xy($pdf, „Dies ist eine Prüfung von PDF-Dokumenten, es ist eine gute Bibliothek“,50, 750);

PDF_show_xy($pdf, „Wenn Sie möchten, versuchen Sie es bitte selbst!“, 50, 730);


//Seite beenden

PDF_end_page($pdf);


// Datei schließen und speichern

PDF_close($pdf);

?>

Speichern Sie es dann als PHP-Datei und durchsuchen Sie es im Browser. PHP führt den obigen Code aus, wodurch eine neue PDF-Datei generiert und am angegebenen Speicherort gespeichert wird.

Jetzt analysieren wir den Code, um mit PHP eine PDF-Datei zu erstellen: 1. Erstellen Sie ein Dokument-Handle. 2. Registrieren Sie die Schriftart und Farbe des Dokuments. 3. Verwenden Sie die von PDFLib bereitgestellten Funktionen Zeichnen Sie Bilder in das Dateihandle. 4. Speichern Sie das Dokument.

Erstellen Sie zunächst ein PDF-Dokument-Handle mit der folgenden Syntax:


$pdf = PDF_new();


Diese Aufgabe wird durch die Funktion PDF_new() erledigt, die ein Handle für das PDF-Dokument zurückgibt, das von allen nachfolgenden Vorgängen verwendet wird.

Der nächste Schritt besteht darin, der PDF-Datei einen Namen zu geben, was durch die Funktion PDF_open_file() erledigt wird, die das zuvor erstellte Dateihandle und einen benutzerdefinierten Dateinamen als Parameter benötigt:


PDF_open_file($pdf, "PDFTest.pdf");


Sobald wir das Dokument erstellt haben, können wir mit der Funktion PDF_begin_page() eine neue Seite darin einfügen:


PDF_begin_page($pdf, 595, 842);


Beenden Sie dann die Seite mit PDF_end_page().

Beachten Sie hier, dass es in der Funktion PDF_begin_page() zwei weitere Parameter gibt. Sie stellen die Breite bzw. Höhe der Seitengröße dar. Die Einheit ist Punkt, 1 Punkt entspricht möglicherweise 1/72 Zoll Ihre Stärke hier ist, dass PHP auch die meisten Standardseitengrößen wie A4 usw. bereitstellt. Das obige Beispiel verwendet die Größe A4.

Der Code zwischen dem Aufruf der Funktion PDF_begin_page() und der Funktion PDF_end_page() schreibt Inhalte in das PDF-Dokument. Der Inhalt kann Text, Bilder, geometrische Figuren usw. sein. Im Beispiel schreiben wir einfach eine Textzeile, besorgen uns zunächst eine Schriftart und schreiben dann den Text in das Dokument. Es ist sehr praktisch, Schriftarten über die Funktionen PDF_findfont() und PDF_setfont() auszuwählen und zu registrieren. Die Funktion PDF_findfont() bereitet eine Schriftart für die Verwendung im Dokument vor. Zu den erforderlichen Parametern gehören der Name der Schriftart, die verwendete Codierung usw ob die Schriftart in die PDF-Datei eingebettet werden soll. Die Funktion PDF_findfont() gibt ein Schriftartobjekt zurück, das in der Funktion PDF_setfont() verwendet wird.


$arial = PDF_findfont($pdf, "Arial", "host", 1);

PDF_setfont($pdf,$arial, 10);


Sobald wir die Schriftart festgelegt haben, können wir mit der Funktion PDF_show_xy() einen String an eine angegebene Stelle auf der Seite schreiben.


PDF_show_xy($pdf, „Dies ist eine Prüfung von PDF-Dokumenten, es ist eine gute Bibliothek“,50, 750);

PDF_show_xy($pdf, „Wenn Sie möchten, versuchen Sie es bitte selbst!“, 50, 730);


Die Funktion PDF_show_xy() wird zum Schreiben von Inhalten auf die Seite verwendet. Die letzten beiden Parameter sind die Koordinatenpositionen der zu schreibenden Zeichenfolge. Beachten Sie, dass der Ursprung der Koordinaten (0, 0) in der unteren linken Ecke des Dokuments liegt . Sobald der Text fertig ist, kann die Seite mit PDF_end_page() geschlossen werden, und natürlich können weitere Seiten geschrieben werden. Nachdem alle Seiten geschrieben wurden, verwenden Sie die Funktion PDF_close(), um das Dokument zu schließen. Zu diesem Zeitpunkt wird das Dokument unter dem Dateinamen und Pfad gespeichert, der beim Aufruf der Funktion PDF_open_file() angegeben wurde, und das Dokumenthandle wird zerstört.

Die PDFLib-Bibliothek kann noch mehr. Sie können der Seite auch Bilder hinzufügen. Nehmen wir die vorherige Datei und fügen Sie eine Bilddatei unter dem Text hinzu.


$image = PDF_open_image_file($pdf, "jpeg", "PDFImageTest.jpg");

PDF_place_image($pdf, $image, 50, 650, 0.25);


Ist es nicht ganz einfach? Die Funktion PDF_open_image_file() öffnet eine Grafikdatei. Zulässige Bildtypen sind: GIF, JPEG, TIFF und PNG. Die Funktion PDF_place_image() verwendet das vorherige Bildhandle, um das Bild in das PDF-Dokument einzufügen . Beachten Sie, dass sich die Koordinatenposition hier auf die untere linke Ecke des Bildes bezieht. Der letzte Parameter ist der Skalierungsfaktor, wenn das Bild in der tatsächlichen Größe angezeigt wird, und 0,5 bedeutet, dass es in der halben Originalgröße angezeigt wird .

Neben dem Zeichnen vorhandener Bilder in PDF-Dokumenten bietet das PDF-Modul auch viele Funktionen, die es uns ermöglichen, geometrische Figuren zu zeichnen. Zum Beispiel: geometrische Muster wie gerade Linien, Kreise, Rechtecke usw. So zeichnen Sie eine gerade Linie:


$pdf = PDF_new();

PDF_open_file($pdf, "LineExam.pdf");

PDF_begin_page($pdf, 595, 842);

$arial = PDF_findfont($pdf, "Arial", "host", 1);

PDF_setfont($pdf, $arial, 12);


//Legen Sie die Farbe der geraden Linie fest

PDF_setcolor($pdf, "Stroke", "rgb", 0, 0, 0);


//Platzieren Sie ein Logo in der oberen linken Ecke

$image = PDF_open_image_file($pdf, "jpeg", "logo.jpg");

PDF_place_image($pdf, $image, 50, 785, 0.5);


//Zeichnen Sie eine gerade Linie unter dem Logo

PDF_moveto($pdf, 20, 780);

PDF_lineto($pdf, 575, 780);

PDF_streich($pdf);


//Zeichne eine weitere gerade Linie am unteren Rand der Seite

PDF_moveto($pdf, 20,50);

PDF_lineto($pdf, 575, 50);

PDF_streich($pdf);


// Etwas Text ausgeben

PDF_show_xy($pdf, "Meng's Corporation", 200, 35);

PDF_end_page($pdf);

PDF_close($pdf);

?>

Wie aus dem obigen Beispiel ersichtlich ist, werden zum Zeichnen einer geraden Linie nur drei Funktionen benötigt: PDF_moveto(), PDF_lineto() und PDF_Stroke(). Das obige Beispiel besteht darin, zuerst die Funktion PDF_moveto($pdf, 20, 780) zu verwenden, um den Cursor auf die Koordinate (20, 780) zu bewegen, und dann die Funktion PDF_lineto($pdf, 575, 780) zu verwenden, um die Koordinaten von zu definieren einen weiteren Punkt auf der geraden Linie (575, 780) und verwenden Sie schließlich PDF_Stroke($pdf), um die Linie zu zeichnen. Die Funktion PDF_setcolor($pdf, „Stroke“, „rgb“, 0, 0, 0), die die Farbe festlegt, verfügt über drei Optionen: „Stroke“, „Fill“ und beides. Die Farbe kann RGB sein CMYK. Die Farbwerte des Farbschemas. Es ist erwähnenswert, dass der in der Funktion PDF_setcolor() verwendete Wert der Prozentsatz der Farbe ist, also die Helligkeit der Farbe. Wenn Sie sie beispielsweise auf Rot einstellen möchten (RGB: 255, 0, 0), können Sie schreiben: PDF_setcolor ($pdf, "Stroke", "rgb", 1, 0, 0), wenn Sie es auf Gelb setzen möchten, können Sie Folgendes tun: PDF_setcolor($pdf, "Stroke", „rgb“, 1, 1, 0).


Um gefüllte Rechtecke und Kreise zu zeichnen, verwenden Sie die folgende Methode:


//Füllfarbe festlegen

PDF_setcolor($pdf, "fill", "rgb", 1, 1, 0);


//Legen Sie die Farbe der Randlinie fest

PDF_setcolor($pdf, "Stroke", "rgb", 0, 0, 0);


//Zeichne ein Rechteck. Die nächsten vier Parameter sind die Koordinaten X, Y, Breite und Höhe der unteren linken Ecke.

PDF_rect($pdf, 50, 500, 200, 300);

PDF_fill_strich($pdf);

PDF_setcolor($pdf, "fill", "rgb", 0, 1, 0);

PDF_setcolor($pdf, "Stroke", "rgb", 0, 0, 1);


//Zeichne einen Kreis, die Parameter sind die Mittelpunktskoordinaten und der Radius des Kreises.


PDF_circle($pdf, 400, 600, 100)


Darüber hinaus bietet PDFLib auch Funktionen zum Schreiben von Dokumentzusammenfassungsinformationen. Diese Funktionen beginnen mit PDF_set_info_*(). Diese Informationen können Folgendes umfassen: Dokumentautor, Titel, Inhalt, Betreff usw. Hier sind einige häufig verwendete Funktionen:


PDF_set_info_author($pdf, "net_lover");

PDF_set_info_creator($pdf, "Meng Xianhui");

PDF_set_info_title($pdf, "PHP-Prüfung");

PDF_set_info_subject($pdf, "PHP");

PDF_set_info_keyWords($pdf, "PHP PDF PDFLib");


Wenn Sie ein solches Dokument mit dem Acrobat Reader öffnen, können Sie die oben geschriebenen Informationen im Menü „Datei“ – „Dokumenteigenschaften“ – „Zusammenfassung“ sehen.

Dennoch glaube ich, dass jeder ein grundlegendes Verständnis dafür hat, wie man PDFLib zum Erstellen von PDF-Dokumenten verwendet. Im Folgenden werden wir anhand eines praktischen Beispiels sehen, wie es unserer Arbeit dienen kann. In diesem Beispiel soll ein Kreisdiagramm basierend auf den bereitgestellten Daten erstellt werden. Erstellen Sie zunächst ein Dateneingabeformular und geben Sie die Größe jedes Teils im Kreisdiagramm ein. Die Dateien lauten wie folgt:


Verwenden Sie PHP, um PDF-Dokumente (Kreisdiagramme) zu erstellen

Kreisdiagrammgenerator

Bitte geben Sie den Datenwert jedes Teils im Kreisdiagramm ein, getrennt durch (,):


Unten ist der Code für die Datei pie.php:


//Bibliothek akzeptieren

$data = $_POST['data'];

$slices = explosion(",", $data);


//Variablen initialisieren

$summe = 0;

$degrees = Array();

$Durchmesser = 200;

$radius = $diameter/2;


//Legen Sie die Farbe jedes Kreisdiagramms fest und speichern Sie sie in einem Array

$colours = array(array(0,0,0),array(0,0,1),array(0,1,0),

Array(1,0,0),Array(0,1,1),Array(1,1,0),

array(1,0,1));


// Gesamtwert berechnen

$sum = array_sum($slices);


// Konvertieren Sie jedes Stück in den entsprechenden Prozentsatz (360-Grad-Kreis)

for ($y=0; $y

$degrees[$y] = ($slices[$y]/$sum) * 360;

}


// Beginnen Sie mit der Erstellung eines PDF-Dokuments

$pdf = PDF_new();

PDF_open_file($pdf, "chart.pdf");

PDF_begin_page($pdf, 500, 500);

PDF_setcolor($pdf, "Stroke", "rgb", 1, 1, 0);

PDF_moveto($pdf, 250, 250);

PDF_lineto($pdf, 350, 250);

PDF_streich($pdf);


for ($z=0; $z

{

//Füllfarbe festlegen

PDF_setcolor($pdf, "fill", "rgb", $colours[$z][0],

$colours[$z][1], $colours[$z][2]);


// Berechne die Endpunktkoordinaten jedes Bogens

$end_x = round(250 ($radius * cos($last_angle*pi()/180)));

$end_y = round(250 ($radius * sin($last_angle*pi()/180)));


// Jeden Bogen durch eine gerade Linie teilen

PDF_moveto($pdf, 250, 250);

PDF_lineto($pdf, $end_x, $end_y);


// Berechne und zeichne den Bogen

PDF_arc($pdf, 250, 250, $radius, $last_angle,($last_angle $degrees[$z]));


//Speichern Sie den letzten Winkel

$last_angle = $last_angle $degrees[$z];


// Füllfarbe

PDF_fill_strich($pdf);

}


//Zeichne den Umriss des äußeren Kreises neu

PDF_circle($pdf, 250, 250, 100);

PDF_streich($pdf);


PDF_end_page($pdf);

PDF_close($pdf);


// Wenn Sie direkt an den Client ausgeben möchten, fügen Sie den folgenden Code hinzu

$buf = PDF_get_buffer($p);

$len = strlen($buf);

header("Inhaltstyp: application/pdf");

header("Content-Length: $len");

header("Content-Disposition: inline; filename=Pie_php.pdf");

PRINT $buf;

PDF_delete($p);

?>

Führen Sie das obige Programm aus und geben Sie unterschiedliche Werte ein. Sie erhalten dann unterschiedliche Kreisdiagramme.

PDFLib ist ein Modul mit guter Kompatibilität. Sie können es nicht nur in PHP schreiben, sondern auch Java, C#, VB.NET, VB5/6 (ActiveX/COM), ASP (VBScript/Jscript), Borland Delphi und Windows Script verwenden Host, ColdFusion4.5, C/C, Python, Perl, RPG; die unterstützten Plattformen sind nicht nur Windows, sondern auch Unix/Linux, Mac OS, IBM eServer iSeries 400 und zSeries S/390 usw. Für bestimmte Betriebsumgebungen Bitte besuchen Sie jederzeit die neuesten Informationen auf ihrer Website.

Das Obige stellt vor, wie man PHP zum Schreiben eines PDF-Dokumentgenerators verwendet, einschließlich der relevanten Aspekte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn