Ankündigung

Einklappen
Keine Ankündigung bisher.

Korrekte HTTP Header für PDF Download auf Mobile

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Korrekte HTTP Header für PDF Download auf Mobile

    Guten Morgen Zusammen,

    ich arbeite aktuell an einer Test-Auswertung, welche als PDF Dokument runtergeladen werden kann.

    Die PDF wird aus einer HTML Vorlage mit der TYPO3-Extension web2pdf gebaut. Die Extension verwendet mpdf für die Generierung der Datei.

    Aus meinem Service bekomme ich $pdf als Stream zurück.

    So sieht der aktuelle Code aus, über den der Download getriggert wird.

    PHP-Code:
            $pdf $this->getResultPDF();
            
    header('Content-Description: File Transfer');
            
    header('Content-Disposition: attachment;filename="Auswertung-Test.pdf"');
            
    header('Content-Type: application/pdf');
            
    header('Content-Length: '.strlen($pdf));
            
    header('Pragma: public');
            print(
    $pdf); 
    Auf Desktop funktioniert das Ganze ohne Probleme.

    Android Geräte beginnen zwar mit dem Download, beenden Ihn aber mit einem "Server Fehler"
    IOS Geräte laden die Datei runter, zeigen die "Datei" aber als Stream an und nicht als PDF Datei.

    Ich teste dieses aktuell auf einer Stage Umgebung. Die Umgebung ist analog zu der Live Umgebung, bis darauf dass wir aktuell kein SSL Zert auf Stage liegen haben.
    Ich wüsste nicht, warum das auf Mobile zum Problem wird, nachdem ich dem Browser erlaubt habe auf HTTP Seiten zuzugreifen.

    Danke und viele Grüße

  • #2
    strlen() auf einen Stream? Ist das nicht ein Widerspruch?

    Und was heißt "als Stream anzeigen"? Ein Stream hat ja kein Aussehen, sondern ist eine Kommunikationsart.

    Kommentar


    • #3
      2020-05-11 09_24_27.png

      So sieht es auf IOS Geräten aus. Die Filelength habe ich aus Testzwecken hinzugefügt.

      Kommentar


      • #4
        Wie sieht der HTTP-Header vom Response aus, wenn du dir ihn im Browser ansiehst?

        Kommentar


        • #5
          2020-05-11 09_36_33-DevTools.png

          Wenn ich das richtig sehe, scheint wohl der Content-Type schon gar nicht anzukommen.

          Kommentar


          • #6
            Siehst du richtig. Wahrscheinlich pfuscht da noch irgendwas anderes rein. Entweder irgendein anderer PHP-Code, oder der Webserver, oder ein Proxy.

            Kommentar


            • #7
              Zitat von hellbringer Beitrag anzeigen
              Siehst du richtig. Wahrscheinlich pfuscht da noch irgendwas anderes rein. Entweder irgendein anderer PHP-Code, oder der Webserver, oder ein Proxy.
              Ich habe den Content-Type über eine andere Methode angepasst -> Funtkioniert, zumindest der Download.

              Nun wird die PDF aber nicht mehr angezeigt, sondern ein Fehler beim Laden der PDF.

              Ich vermute mal, dass das Format vom PDF nicht so richtig stimmt.

              Wenn ich mir
              PHP-Code:
              $pdf 
              debugge, bekomme ich den Text analog zu dem Bild aus Antwort #3 .

              Weiß jemand, wie man dieses Format nennt?

              Kommentar


              • #8
                Das ist kein Format, das sind einfach die Binärdaten, die du dir als Text darstellen lässt, was natürlich keinen Sinn macht.

                Kommentar


                • #9
                  Zitat von romik Beitrag anzeigen
                  Wenn ich mir
                  PHP-Code:
                  $pdf 
                  debugge, bekomme ich den Text analog zu dem Bild aus Antwort #3 .

                  Weiß jemand, wie man dieses Format nennt?
                  Das ist der PDF Quelltext... und zumindest der Anfang sieht 100% korrekt aus.
                  Ein PDF ist wohl strukturiert, beginnt immer mit dem Header "%PDF-1.x" (die Versionsnummer der PDF-Spezifikation) und kann alles mögliche enthalten, die wirren Zeichen sind eingebette Objekte (streams), das kann alles mögliche sein wie z.B. Texte, Fonts, Bilder, Sounds, Filme, andere Dokumente... selbst ausführbarer Code (und alle Inhalte können verschlüsselt sein!). Aber das braucht dich alles nicht scheren...

                  Verlgeiche die Größen der Dateien (in Byte!), sie sollten überall exakt gleich groß sein.
                  Zudem braucht ein PDF zur Darstellung natürlich einen Reader/Viewer, kA ob man sowas für Handy gesondert installieren muss.
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar

                  Lädt...
                  X