Hallo zusammen,
in einem etwas größeren Projekt sind wir gezwungen von PDFLib 5 auf
PDFLib 7 zu aktualisieren. Leider scheint es so, daß mit dem
Versionssprung eine =C4nderung des Koordinatensystems einhergeht. Die
Koordinate 0/0 ist jetzt nicht mehr links oben, sondern links unten
auf einer Seite. Um dies zu ändern sieht die PDFLib die Option topdown
vor. Nur leider habe ich bisher noch nicht herausfinden können, wie
ich diese benutze. Kleines Beispiel:
01 <?php
02 $outfilename =3D "datei.pdf"; // Im Verzeichnis muß geschrieben
werden können
03 $p =3D PDF_new();
04 PDF_set_parameter($p, "textformat", "utf8");
05
06 if (PDF_begin_document($p, $outfilename, "") =3D=3D 0) {
07 &nsbp; die("Error: " . PDF_get_errmsg($p));
08 }
09
10 PDF_begin_page_ext($p, 0, 0, "width=3Da4.width height=3Da4.height");
11
12 $f =3D pdf_load_font($p, "Helvetica", "unicode", "");
13 PDF_setfont($p, $f, 20);
14 PDF_show_xy($p, "Beispieltext", 0, 0);
15 PDF_end_page_ext($p, "");
16
17 PDF_end_document($p, "");
18 PDF_delete($p);
19 print "$outfilename generated";
20 ?>
Dies erzeugt ein PDF-Dokument, bei dem in der linken unteren Ecke der
Text "Beispieltext" steht. Nun geht es darum, den Text links oben zu
platzieren, ohne die Koordinaten zu ändern, sondern das
Koordinatensystem anzupassen.
In der API-Referenz zur PDFLib (Seite 28 in der deutschen Version)
fand ich den Hinweis, daß die Option topdown mittels
PDF_set_parameter() zu setzen ist. Da dies laut API-Referenz ein
seitenbezogener Schlüssel ist, ergänze ich also in Zeile 11 folgenden
Befehl:
PDF_set_parameter($p, "topdown", "true");
Als Ergebnis erhalte ich im Errorlog einen Fatal Error mit dem
Hinweis: "Can't set parameter 'topdown' in 'page' scope". Also doch
nicht seitenbezogen? Na gut, packe ich den Befehl stattdessen in Zeile
5. Das ergibt wiederum einen Fatal Error. Diesmal mit dem Hinweis
"Can't set parameter 'topdown' in 'object' scope".
Okay, wird also weitergesucht. Im PDFLib-Tutorial (Seite 61) finde ich
den Hinweis, daß der Parameter auch als Option bei
PDF_begin_page_ext() angegeben werden kann. Okay, also sieht Zeile 10
jetzt so aus:
PDF_begin_page_ext($p, 0, 0, "width=3Da4.width height=3Da4.height
topdown=3Dtrue");
Es erfolgt kein Errorlog-Eintrag. Aber jetzt wird gar kein Text
ausgegeben. Also wieder rückgängig machen und weiterlesen. Ein paar
Zeilen weiter finde ich im Tutorial den Hinweis, daß der Parameter nur
zwischen den Seiten benutzt werden kann. Aha, aber was ist "zwischen"
bei nur einer Seite?" Na ja, dann gibt's halt nur ein davor (Zeile 09)
und danach (Zeile 16). In beiden Fällen erfolgt kein Errorlog-Eintrag
aber auch keine Textausgabe.
Grmpf, langsam gehen mir die Ideen aus. In meiner Verzweiflung ergänze
ich Zeile 06 um den Parameter:
if (PDF_begin_document($p, $outfilename, "topdown=3Dtrue") =3D=3D 0) {
Als Ergebnis gibt's wieder einen Fatal Error: "Unknown option
'topdown'". Ich bin mittlerweile völlig ratlos, wie dieser Parameter
zu setzen ist und hoffe nun auf einen von Euch, der mich erleuchtet.
Ich bin überzeugt davon, daß es bestimmt total simpel ist, ich habe
den Wald vor lauter Bäumen nicht sehe.
Vielen Dank für die Aufmerksamkeit.
