de.comp.lang.php.* FAQ

23.12. Warum stellt mein Internet Explorer statt der PDF-Datei eine leere Seite dar?

Keywords: PDF | leer

Antwort von Kerry W. Lothrop

Internet Explorer achtet in vielen Bereichen (fälschlicherweise) auf Dateienedungen statt auf den MIME-Typ. Bei Verwendung eines GET-Requests, insbesondere aber bei einem POST-Request kann es dazu kommen, dass nur eine leere Seite dargestellt wird. Folgende Möglichkeiten gibt es, diesen Bug zu umgehen:

  • Umbenennen der Dateiendung in .pdf und Konfigurieren des Servers, dass .pdf-Dateien durch PHP geparsed werden, z.B. durch die Apache-direktiven AddType oder ForceType.

  • Bei GET ohne Parameter: Anhängen der Zeichenkette /.pdf an die URL. Beispiel: /pdf.php/.pdf. Über diese Methode kann auch ein Dateiname spezifiziert werden, für den Fall, dass die Datei abgespeichert wird und der betreffende Browser die Content-Disposition-Direktive nicht kennt.

  • Alternativ: Anhängen der Zeichenkette ?.pdf an die URL. Beispiel: /pdf.php?.pdf.

  • Bei GET mit Parametern: Anhängen der Zeichenkette &.pdf an die URL. Beispiel: /pdf.php?file=termine&.pdf.

  • Bei POST: Schreiben des Ergebnisses in eine temporäre Datei mit der Endung .pdf und Weiterleitung per header() auf die Datei.

  • Alternativ bei kleinen PDF-Dateien (siehe Wie groß darf die Menge an Daten sein, die ich in einer Session speichern darf?): Die PDF-Datei in die Session schreiben und Weiterleitung auf eine PHP-Datei, die den Dateiinhalt aus der Session ausgibt, mit den oben beschriebenen GET-Methoden.

  • Das Umschreiben der URL auf der Serverseite, z.B. durch das Apache-Modul mod_rewrite.

Valid HTML 4.01! Valid CSS!

23.12. Warum stellt mein Internet Explorer statt der PDF-Datei eine leere Seite dar?
http://www.php-faq.de/q/q-pdf-files-ie-blank.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team