Kann keine Schriftart in ein PDF laden

Alles, was PHP betrifft, kann hier besprochen werden.

Kann keine Schriftart in ein PDF laden

Postby grizz » 03. January 2005 22:55

Hi @ all
Habe folgendes Problem:
Ich versuche gerade Daten aus meiner MySQL-Datenbank auszulesen und diese leserlich in eine PDF zu schreiben. Im Prinzip also so wie das Beispiel der CD-Verwaltung unter XAMPP 1.4.10...
Nur aus irgendeinem Grund, will PHP mir die Schriftart Helvetica, die eigentlich Standard ist, nicht laden. Folgender Fehler tritt auf:

Code: Select all
Fatal error: PDFlib error: [1016] PDF_findfont: Couldn't open AFM file 'Helvetica.afm' for reading (file not found) in mein_file.php on line 24


Ich benutze momentan noch PHP4... keine Ahnung ob das irgendwas zur Sache tut...
Ausserdem habe ich (leider) noch Windows XP (der Umstieg auf Linux ist mein guter Vorsatz für dieses Jahr :wink:) mit XAMPP 1.4.10a installiert...

Hier mal der Code:
Code: Select all
  function template($pdfdoc) {
    $image = pdf_open_jpeg($pdfdoc, "ein_bild.jpg");
    pdf_place_image($pdfdoc,$image,200,100,0.3);
  }
 
  $file = fopen("test.pdf", "w");
  $pdfdoc = pdf_open($file);
     
  //Infos zum Dokument
  pdf_set_info($pdfdoc, "Author", "Ich");
  pdf_set_info($pdfdoc, "Title", "Dies ist ein Test");
  pdf_set_info($pdfdoc, "Subject", "Dies ist ein Test");
  pdf_set_info($pdfdoc, "Creator", "PHP ".phpversion()." mit PDFlib ".pdf_get_majorversion());
 
  //Parameter
  pdf_set_parameter($pdfdoc,"resourcefile", $uprpath);
 
  //1.Seite
  pdf_begin_page($pdfdoc,421,595);
 
  echo template($pdfdoc);
 
  //----------> Hier tritt der Fehler auf!
  $font = pdf_findfont($pdfdoc, "Helvetica", "host", 0);
  pdf_set_font($pdfdoc, $font, 10);
  pdf_set_text_pos($pdfdoc, 100, 100);
  pdf_show($pdfdoc, "Hallo Welt");

  pdf_moveto($pdfdoc, 200, 200);
  pdf_lineto($pdfdoc, 300, 300);
  pdf_lineto($pdfdoc, 200, 300);
  pdf_closepath_fill_stroke($pdfdoc);
 
  pdf_end_page($pdfdoc);
 
  pdf_close($pdfdoc);
 
  fclose($file);


Das Testscript sollte mir eigentlich drei Dinge darstellen lassen... 1. Ein Logo, 2. ein schwarzes Dreieck und 3. die Worte "Hallo, Welt!"... Das mit der Datenbank kommt dann später, sobald ich das hier läuft...

Hat jemand den Durchblick in Sachen dynamische PDF-Generierung??
Wieso kann ich Helvetica, oder eine beliebige Schrift aus dem Ordner php\pdf-related\ nicht laden??

Danke im Voraus
griZZ
grizz
 
Posts: 7
Joined: 03. January 2005 22:31

Postby DJ DHG » 03. January 2005 23:44

Moin Moin

Ist nur eine Vermutung, aber muss die Datei für die Schrift nicht mit Pfad
und Extension angeben werden?

Also "Pfad/zu/Helvetica.afm" oder wenn Sie im selben Verzeichnis liegen "Helvetica.afm" ?

mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby grizz » 03. January 2005 23:59

Hi DJ DHG,
Also in dieser Form, wenn ich dich richtig verstanden habe:

Code: Select all
  $font = pdf_findfont($pdfdoc, "C:\\webserver\\xampp\\php\\pdf-related\\Helvetica.afm", "host", 0);


So was in der Art hätte ich spontan auch vermutet, denn mir ist nicht ganz klar, welche Ordner PHP überhaupt nach der Schrift durchsucht... Gemäss PHP-Manual genügt jedoch "Helvetica"...
Deine Variante führt leider nur zu einer weiteren Fehlermeldung:

Code: Select all
PDFlib error: [2516] PDF_findfont: Metrics data for font 'C:\webserver\xampp\php\pdf-related\Helvetica.afm' not found in mein_file.php on line 24


...
grizz
 
Posts: 7
Joined: 03. January 2005 22:31

Postby DJ DHG » 04. January 2005 00:35

Moin Moin

Kopiere einfach mal eine Schrifdatei in den Order in dem sich auch das
Script befindet.

mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby grizz » 04. January 2005 00:41

nö,
läuft auch nicht....

trotzdem danke für die ideen...
grizz
 
Posts: 7
Joined: 03. January 2005 22:31

Postby Wiedmann » 04. January 2005 01:03

$font = pdf_findfont($pdfdoc, "Helvetica", "host", 0);

Bei einem Font der sowieso einkompiliert ist, kann du das auch direkt angeben:
$font = pdf_findfont($pdfdoc, "Helvetica", "builtin", 0);

(dieses Verzeichnis gibt es im Prinzip nur aus Copyrightgründen).

Bei deinem ursprünglichem Befehl müsste der Code dagegen so aussehen:
Code: Select all
pdf_set_parameter($pdf, "resourcefile", "C:/webserver/xampp/php/pdf-related/pdflib.upr");
pdf_set_parameter($pdf, "prefix", "C:/webserver/xampp/php/pdf-related");
$font = pdf_findfont($pdfdoc, "Helvetica", "host", 0);

(analog wenn du andere PS-Fonts im AFM-Format einbinden willst.)

Anonsten bietet sich unter Win auch eher das Encoding "winansi" anstatt "host" an.

BTW:
anstatt sich mit der PDFLIb rumzuschlagen *g* würd ich an deiner Stelle eine passende PHP-Klasse wie z.B. die FPDF-Lib benutzen.

Wenn du trotzdem die PDFLib benutzen willst, sei dir dringend das Studium des Handbuches derselben angeraten...
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby grizz » 04. January 2005 11:23

@ Wiedmann

anstatt sich mit der PDFLIb rumzuschlagen *g* würd ich an deiner Stelle eine passende PHP-Klasse wie z.B. die FPDF-Lib benutzen.


FPDF??? Du siehst ich totaler Anfänger...
Ich nehm sie mir mal unter http://www.fpdf.de/ vor...

Danke...
Melde mich dann vielleicht wieder
grizz
 
Posts: 7
Joined: 03. January 2005 22:31

Postby grizz » 04. January 2005 12:56

Mensch hatte ich Tomaten auf den Augen.... :wink:

Man muss nur das richtige Stichwort lesen und schon hat man die Lösung... in meinem Fall 'FPDF' ...
Vergesst PDFlib, es lebe FPDF.... :D
grizz
 
Posts: 7
Joined: 03. January 2005 22:31


Return to PHP

Who is online

Users browsing this forum: No registered users and 9 guests