PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PDF mittels PHP erzeugen


tomtom
2006-06-20, 20:14:04
Hi Leute!

Hab mich heute zum ersten Mal mit der Erzeugung von pdf-Files mittels PHP beschäftigt. Soweit so gut. Ob mein Code das tut, was er tun soll (ein PDF erzeugen mit folgendem Inhalt: "Text") kann ich nicht genau sagen, da ich folgendes Problem habe:

Das PDF wird erzeugt, allerdings ist es 0 kB groß und lässt sich auch nicht öffnen.

Ich verwende die PHP Version 5.1.2, wodurch schon mal einige der Tipps und Hilfen auf php.net wegfallen. Als Library verwende ich die, die mit PHP bereits mitgeliefert wird (php_pdf.dll). Natürlich habe ich sie in der php5.ini auch enabled.

Beim Ausführen und Interpretieren meldet mir der Interpreter keine Fehler im Skript, nur kann ich das File nicht öffnen =/

Hier mal der besagte Code:

function createPDF()
{
try
{
$fd = fopen("test.pdf", "w");
$pdfdoc = pdf_new();
pdf_open_file($pdfdoc, "test.pdf");
pdf_begin_page($pdfdoc, 595.3, 841.8);

$font = pdf_findfont($pdfdoc, "Helvetica", "host", 0);
if ($font) {
pdf_setfont($pdfdoc, $font, 12);
}

pdf_set_text_pos($pdfdoc, 50, 795);
pdf_show($pdfdoc, "Text");
pdf_end_page($pdfdoc);
pdf_close($pdfdoc);
echo("PDF created");
}
catch (Exception $e)
{
echo("Exception caught: " . $e->getMessage());
}
}


Hoffe, ihr könnt mir da weiterhelfen - arbeite wie gesagt zum ersten Mal damit ;)

Danke, mfG

mf_2
2006-06-20, 21:24:56
Auf den ersten Blick auf dein script und auf die Erklärung in php.net sehe ich einen großen Fehler.
Zitat von php.net

n PHP 4 müssen Sie sich zunächst eine PDF-Ressource besorgen, zum Beispiel mit folgenden Funktionsaufruf:

$p = PDF_new().

Die erhaltene PDF-Ressource verwenden Sie dann als ersten Parameter in allen weiteren Funktionsaufrufen, so zum Beipiel in:

PDF_begin_document($p, "", "").

In PHP 5 dagegen wird mit folgendem Funktionsaufruf ein PDFlib-Objekt erzeugt:

$p = new PDFlib().

soll heissen, du verwendest die php4methode ( pdf_new ) in php5, wo er new pdflib() erwartet.
Das ist nur mal das erste was ich gesehen habe. Ferner vermisse ich ein fclose, wenn eine datei offen is, muss sie auch wieder geschlossen werden. Da ich mich mit pdfs aber ned sooo auskenne, is das vllt. auch falsch. Ich habe leider nur php4, kann dir also leider ned mehr helfen. nur eben das, was ich schon geschrieben habe.

tomtom
2006-06-20, 21:47:40
Hi, danke für die Hilfe ;)

Wies aussieht muss ich also die (externe) PDFlib einbinden, wie ich php.net entnommen habe ;)

Werde das mal probieren!

mf_2
2006-06-20, 22:30:34
oder du nimmst php4. ich verwende das auch und mir reicht es noch. oder hast du zeug, das nur auf php5 läuft?

tomtom
2006-06-20, 22:43:41
mf_2[/POST]']oder du nimmst php4. ich verwende das auch und mir reicht es noch. oder hast du zeug, das nur auf php5 läuft?

Hab das jetzt alles mal zum Laufen gebracht, werd mich da morgen weiter einarbeiten - thx nochmal ;)

Ich benutze PHP5 für nichts Spezielles - allerdings möchte ich halbwegs up-to-date bleiben, was Änderungen in Funktionsbibliotheken usw. angeht. Wenn ich allein schon sehe, was sich seit PHP4 in der PDF-Erzeugung getan hat, dann merke ich schon, wie wichtig es für mich selbst ist, mit einer möglichst neuen PHP-Version zu arbeiten (zumal ich beruflich eventuell in diese Richtung einschlagen will) ;)