Zum Inhalt springen

[PHP] Grafiken in PDF


Empfohlene Beiträge

Hi,

mir schwebt da was vor. Ich möchte aus einer Datenbank mit PHP Grafiken generieren (z.B. Diagramme). Diese Diagramme sollen dann in einem PDF Dokument ausgegeben werden.

Ich hab zuvor noch nicht mit den PDF Funktionen und auch nicht mit den Grafikfunktionen von PHP gearbeitet. Worauf muss ich achten? Brauche ich spezielle Bibliotheken oder sowas? Gibts irgendwo Mittel, welche die Arbeit erleichtern (Fertige Funktionen, Klassen)

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

für die Image und Diagramm funktionen nimmt man meist die GDLib!

Diese muss installiert sein, kann also fehlen.

PDF Libraries gibt es ein paar...

http://www.fpdf.org/

Hier gibts auch ein Artikel drüber

http://www.drweb.de/php/php_pdf.shtml

Und direkt im Manual

http://de3.php.net/manual/de/ref.pdf.php

Einfach ma Googlen

http://www.google.de/search?q=php+pdf&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:de-DE:official

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Habe nun meine ersten PDF Probleme.

Arbeite auf XAMPP 1.4.12

Habe in verschiedenen Dokumentationen gelesen, dass das Erstellen von PDFs im Speicher unter PHP5 Probleme bereitet.

Wie muss ich das machen, ich komme auf keinen grünen Zweig.


$pdf = pdf_new();
pdf_open_file($pdf,"neu.pdf");
pdf_begin_page($pdf, 200, 200);
pdf_end_page($pdf);
pdf_close($pdf);

$data = pdf_get_buffer($pdf);

echo $data;[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

header und so funktioniert schon.

Meine Probleme liegen beim erstellen des PDFs.

es sollte eigentlich so funktionieren:

$pdf = pdf_new();

pdf_open_file($pdf);
pdf_begin_page($pdf, 595, 842);
pdf_set_font($pdf, "Times-Roman", 30, "host");
pdf_set_value($pdf, "textrendering", 1);
pdf_show_xy($pdf, "A PDF document created in memory!", 50, 750);
pdf_end_page($pdf);
pdf_close($pdf);

$data = pdf_get_buffer($pdf);

header("Content-type: application/pdf");
header("Content-disposition: inline; filename=test.pdf");
header("Content-length: " . strlen($data));

echo $data;[/PHP]

aber in PHP5 muss ein zweiter Parameter bei pdf_open_file() übergeben werden. Wenn ich den übergebe, wird das PDF aber nicht im Speicher erstellt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jetzt habe ich einen anderen Ansatz:


$pdfdoc = pdf_new();
pdf_open_file($pdfdoc, "neuer_test.pdf");
pdf_begin_page($pdfdoc, 595.3, 841.8);
$font = pdf_findfont($pdfdoc, "Helvetica", "winansi", 0);
pdf_setfont($pdfdoc, $font, 20);
pdf_set_text_pos($pdfdoc, 50, 795);
pdf_show($pdfdoc, "Liste");
pdf_end_page($pdfdoc);
pdf_close($pdfdoc);

readfile("neuer_test.pdf");
[/PHP]

Das PDF wird aber nicht in dem Verzeichnis meines PHP-Skripts erzeugt, sondern unter C:\Programme\apachefriends\xampp

Deswegen liefert readfile einen Fehler, da es das PDF nicht finden kann.

Was mache ich falsch? Und wieso wird das PDF nicht im aktuellen Verzeichniss erstellt?

Link zu diesem Kommentar
Auf anderen Seiten teilen

das könnte eines der Probleme sein die bei XAMP nutzung auftreten.

Gug mal für PHP unsw. das Root-Verzeichnis gesetzt ist.

An sich "muss" das Script die Datei in dem verzeichnis erzeugen, in dem es auch selbst läuft. Weil von dem Ordner muss es ausgehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

das Komische ist, dass eine andere Funktion schon die Datei im aktuellen Verzeichnis erstellt hat. Nur die PDF Funktionen scheinen zu "spinnen".

PHP Root: Ich hab da mehrere Dateien: php.ini, php5.ini, httpd5.conf

Da drin hab ich nichts verändert. Kenn mich da auch nicht aus.

Habe nur beim Apache in der httpd.conf das root für den Webserver geändert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit Hilfe der PDF-Bibliothek von Thomas Merz können mit PHP PDF Dateien erzeugt werden. Die Bibliothek ist unter http://www.pdflib.com/products/pdflib/index.html verfügbar. Zudem sind noch zwei weitere Bibliotheken notwendig, die JPEG Bibliothek und die TIFF Bibliothek, um PHP zu übersetzen. Diese beiden Bibliothek bereiten häufig Probleme bei der Konfiguration von PHP. Sie sollten unbedingt die Meldungen des Konfigurations-Skripts befolgen, um aufkommende Probleme zu lösen.

Beachten sie zudem die exzellente Dokumentation, die mit pdflib ausgeliefert wird. Sie gibt einen guten Überblick über die Möglichkeiten von pdflib.

Die meisten Funktionen in pdflib sind in ähnlicher Form auch in PHP vorhanden. Die Parameter sind in der Regel auch identisch. Sie sollten zudem die Grundkonzepte von PDF und Postscript verstanden haben, um das PDF Modul effizient nutzen zu können.

Alle Längen und Koordinatenangaben sind in Postscript-Punkten gemessen. Für gewöhnlich entsprechen 72 PostScript-Punkte 1 Inch, was jedoch von der Auflösung des Ausgabegeräts abhängt.

Neben diesem Modul gibt es noch ein weiteres zur Erzeugung von PDF-Dateien, basierend auf der Bibliothek ClibPDF von FastIO. Es hat eine geringfügig andere Programmierschnittstelle. Schauen Sie in die Funktionsübersicht für weitere Details.

Das PDF Module von PHP verwendet einen neuen Type von Variable Er wird pdfdoc genannt. pdfdoc ist ein Zeiger auf das PDF Dokument und wird bei fast allen Funktion als erster Parameter erwartet.

Tips zur Installation von pdflib 3.x

Seit Version 3.0 von pdflib sollten sie pdflib mit der configure-Option --enable-shared-pdflib konfigurieren.

Verwenden alter pdflib Versionen

Mit Version 2.20 von pdflib wurden einige Veränderungen an der API vorgenommen. Zudem ist Unterstützung für asiatische Zeichensätze hinzugekommen. Dies hat leider auch zu Änderungen am php4-Modul geführt (nicht php3). Wenn Sie pdflib 2.20 benutzen, dann sollten Sie die Erzeugung von Dokumenten im Speicher mit Vorsicht benutzen. Bis zur entgültigen Version 3.0 von pdflib könnte dies instabil sein. Der encoding Parameter der Funktion pdf_set_font() hat sich in eine Zeichenkette geändert. Dies bedeutet, dass anstatt von beispielsweise 4 jetzt 'winansi' verwendet werden muss.

Wenn Sie die Version 2.30 von pdflib verwenden, dann steht Ihnen die Funktion pdf_set_text_matrix() nicht mehr zur Verfügung. Diese Funktion wurde komplett entfernt. Grundsätzlich ist es ratsam die release notes der verwendeten Version von pdflib zu lesen.

Versionen von PHP4 die nach dem 9. März 2000 erscheinen unterstützen nur noch die Versionen >3.0 von pdflib. PHP3 sollte hingegen nicht mit Versionen >2.01 verwendet werden.

Bei Gebrauch von pdflib 2.01 sollte überprüft werden, ob die Bibliothek richtig installiert wurde. Es sollte die Datei oder ein Verweis libpdf.so im Installationsverzeichnis von pdflib existieren. Version 2.01 erzeugt nur die Bibliothek mit dem Namen libpdf2.01.so, die so nicht vom Linker des Systems gefunden werden kann. In diesem Fall müssen Sie den Verweis von libpdf.so nach libpdf2.01.so selbst anlegen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@baba007

Ein Auszug von den Dokus von PHP und Co. hift mir nicht weiter (dachte, das hätte ich bereits oft genug erwähnt). Hab die zu Genüge gelesen, aber entweder bin ich zu blöd es zu verstehen, oder es steht nicht drin.

Ich habe hier gepostet, um eine alternative Erklärung/Formulierung zu erhalten.

Trotzdem Danke für deine Mühe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...