FDF und Firefox

Hallo!

Ich arbeite derzeit an einem Projekt, bei dem Userdaten aus der Datenbank als druckbares PDF für die Besucher einer Webseite ausgegeben werden. Die Lösung, mit der ich arbeite, ist FDF (wie hier beschrieben: http://phpmagazin.de/itr/online_artikel/psecom,id,67…) und das klappt lokal beim testen auch wunderbar. Nur komischerweise, wenn ichs auf den Webspace spiele, gehts im IE immer noch, aber im Firefox nicht mehr. Internet Explorer öffnet ein PDF mit den Daten, Firefox hingegen gibt mir die FDF Datei im Textformat einfach aus. Ich verstehe nur nicht, warum Firefox lokal ein PDF öffnet und aufm Server das fdf File wie eine Textdatei behandelt. Hat jemand vielleicht eine Erklärung für mich?

Danke,
Chi

Hallo!

Ich verstehe nur nicht, warum Firefox lokal ein PDF öffnet
und aufm Server das fdf File wie eine Textdatei behandelt.
Hat jemand vielleicht eine Erklärung für mich?

Schau Dir mal die genaue Reaktion des Servers
an. Schickt er ein falsches „Content-type: text/html“
vorneweg? Oder gar keinen „Content-type“.

Hilfreich ist es auch, wenn der Link die
Endung „.pdf“, also
http://superchiserver.chi.de/meins/script/aktuell.pdf
hat.

Grüße

CMБ

Schau Dir mal die genaue Reaktion des Servers
an. Schickt er ein falsches „Content-type: text/html“
vorneweg? Oder gar keinen „Content-type“.

Ich bin kein server spezialist, ehrlich gesagt hab ich überhaupt keine Ahnung… wie mach ich das denn?

Hilfreich ist es auch, wenn der Link die
Endung „.pdf“ hat.

Das geht meines Wissens nach nicht. Ich habe die Datei form.pdf, die wurde mit Acrobat erstellt, darin gibt es z.B. drei leere Formulare, die heißen form1, form2 und form3. Über html fülle ich ein Formular aus und die dort eingetragenen Daten werden in eine .fdf datei (sagen wir mal die heißt 20070321.fdf) geschrieben. Damit das - wenigstens im IE - funktioniert, muss dann der Link (bzw. in meinem Fall mach ichs über einen PHP Header) auf die 20070321.fdf zeigen. Wenn ich auf die form.pdf verlinke, seh ich nur ein leeres Formular, also seh ich da keine Möglichkeit auf ein pdf statt ein fdf zu verlinken, es sei denn man könnte dem Browser eine falsche Dateiendung vorgaukeln.

Nachtrag: Ich hab das mal hochgeladen, damit ihr euch ein Bild davon machen könnt:

http://www.amaterasu.at/multimedia/test_fdf.php

Einfach die drei Felder irgendwie ausfüllen (und nicht auf den Text achten), dann abschicken und auf der nächsten Seite dann „download“. Bei mir spinnt das wie gesagt, im Firefox krieg ich nur Test.

Mich würde schon interessieren, ob es jemanden gibt, bei dem sich da im Firefox ganz normal ein PDF öffnet. Wenn ja, hab ich einen Anhaltspunkt.

Nachtrag: Ich hab das mal hochgeladen, damit ihr euch ein Bild
davon machen könnt:

http://www.amaterasu.at/multimedia/test_fdf.php

Aha, der Server schickt
„text/plain“ als Content-type.

Dan macht Firefox das richtige(!) und
IE „funkt dazwischen“ (auch wenn das
in diesem Fall „wünschenswert“ erscheint)

http://www.amaterasu.at/multimedia/zeug/432691109442…

GET /multimedia/zeug/432691109442.fdf HTTP/1.1
Host: www.amaterasu.at
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.amaterasu.at/multimedia/test_fdf.php
Pragma: no-cache
Cache-Control: no-cache

HTTP/1.x 200 OK
Date: Wed, 21 Mar 2007 10:11:55 GMT
Server: Apache
Last-Modified: Wed, 21 Mar 2007 10:09:10 GMT
Etag: „7c1110f-10b-46010446“
Accept-Ranges: bytes
Content-Length: 267
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/plain

Grüße

CMБ

Aha, der Server schickt
„text/plain“ als Content-type.

Dan macht Firefox das richtige(!) und
IE „funkt dazwischen“ (auch wenn das
in diesem Fall „wünschenswert“ erscheint)

Und was genau fange ich mit diesem Wissen nun an? Wie schon gesagt: kein Spezialist für sowas. Was tu ich jetzt mit dieser Information bzw. wie behebe ich mein Problem?

Seltsamerweise: wenn ich ein .pdf bei Dir öffne
(LMfolder.pdf), dann sendet der Server den
korrekten „Content-type“ (application/pdf)
vorneweg:GET LMfolder.pdf HTTP/1.1
Host: www.amaterasu.at

HTTP/1.x 200 OK
Date: Wed, 21 Mar 2007 10:49:09 GMT
Server: Apache
Last-Modified: Tue, 28 Mar 2006 09:06:57 GMT
Etag: „701c7a0-3c154-4428fcb1“
Accept-Ranges: bytes
Content-Length: 246100
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: application/pdfWas nun?

Grüße

CMБ

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Seltsamerweise: wenn ich ein .pdf bei Dir öffne
(LMfolder.pdf), dann sendet der Server den
korrekten „Content-type“ (application/pdf)
vorneweg:

kann ich bei meinem link bzw. dann wenn ich mit einem

header(„Location:test.fdf“);

zu der fdf Datei weiterleite nicht irgendwie den content-type angeben/erzwingen?

Nachtrag: Problem hat sich soeben gelöst. Vielen Dank nochmal, der Tip mit dem content-type war genau das, was ich brauchte.

Die Lösung:
Vorher habe ich die FDF Daten in ein fdf File am Server geschrieben und das dann einfach mit header(„Location:xxx.fdf“) aufgerufen.

Jetzt schreibe ich die FDF Daten in die Variable $fdf und mache eigentlich nur folgendes:

header („Content-Type: application/vnd.fdf“);
print $fdf;
?>
Damit hat dann auch Firefox kein Problem mehr, obendrein spare ich mir das Script um die lästigen temporären FDF Dateien am Server wieder zu löschen.

Vielen, vielen Dank nochmal!

Hallo Vhi,

Jetzt schreibe ich die FDF Daten in die Variable $fdf und
mache eigentlich nur folgendes:

header („Content-Type: application/vnd.fdf“);
print $fdf;
?>

OK, wie sieht denn der Aufruf des PHP-Skriptes
in der HTM-Form *konkret* aus?

Da Du einen Apache-Server laufen hast, wird
höchstwahrscheinlich auch $ENV[‚PATH_INFO‘]
gehen, dann kannst Du so tun, als ob das
skript ein „fdf-file“ ist, dann kriegst
Du gar keine Probleme mehr.Grüße

CMБ