Ankündigung

Einklappen
Keine Ankündigung bisher.

Öffnen von pdf und anschließendes Speichern

Einklappen

Neue Werbung 2019

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

  • Öffnen von pdf und anschließendes Speichern

    Hallo,

    erst einmal ein ganz großes Lob an das Forum, hat mir schon bei etlichen Fragen weiterhelfen können.


    Nun zu meiner Frage:

    ich habe ein Downloadskript geschrieben, welches Daten (hier pdf files) auf dem Server anbietet, die sonst nicht zum Download stehen würden. Davor muss der User jedoch eine Art Einverständniserklärung abgeben (cbox).

    Nun habe ich aber folgendes Problem:

    Wenn ich das pdf Dokument öffne, und es danach speichern will, heißt das Dokument test.pdf (orientiert sich an test.php bzw je nachdem wie das php file heißt).
    Wenn ich das pdf Dokument als Content-Disposition: attachment angebe, wird das Dokument mit korrektem Namen zum Öffnen/Download angeboten, jedoch dann entsprechend im Adobe Reader geöffnet (nicht im Browser Fenster).

    Nur um es nochmal zu verdeutlichen, es geht hier nur um den Dateinamen, wenn man das Dokument im Browser inline anzeigen lässt, und von dort das Dokument speichern will.

    PHP-Code:
    <?php
    $download 
    $_GET['download'];

    if (!isset(
    $_POST['cbox'])) { die("You have to agree first!"); }

    $basedir "\dir\subdir";

    $filelist = array(
    "file1" => "\file1.pdf",
    "file2" => "\file2.pdf",
    "file3" => "\file3.pdf",
    );

    if (!isset(
    $filelist[$download])) { die( "File not available"); }

    $filename $basedir."$filelist[$download]";

    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");  
    header("Content-Type: application/pdf");
    header("Content-Disposition: inline; filename=".basename($filename));  
    readfile($filename);
    ?>
    Ich danke im Voraus \o/

  • #2
    - Such dir ein Beispiel, wo es so funktioniert wie du es haben willst...
    - Analysiere die dort gesendeten mit einem Werkzeug deiner Wahl (Fiddler, Firefox Tamper Data, etc.)
    - Verwende die dort gesendeten Header in deinem Script und schaue obs geht
    Tutorials zum Thema Technik:
    https://pilabor.com
    https://www.fynder.de

    Kommentar


    • #3
      Ich habe in meinem Download (aus DB dynamisch generierte CSV-Dateien) noch folgende Zeile:
      header("Content-Disposition: attachment; filename=dateiname.csv");
      [PHP]if ($var != 0) {
      $var = 0;
      }[/PHP]

      Kommentar


      • #4
        header("Content-Disposition: inline; filename=\"".basename($filename)."\";");


        ändere die Zeile mal entsprechend meine roten Ersetzungen

        warum stört dich das Öffnen im separaten Acrobat-Fenster?
        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

        Kommentar


        • #5
          Ich würde sagen, da hast du schlechte Karten bei "inline" und "filename"

          http://greenbytes.de/tech/tc2231/#in...ciifilenamepdf
          'inline', specifying a filename of foo.pdf

          Some UAs use this filename in a subsequent "save" operation. This variation of the test checks whether whatever handles PDF display receives the filename information, and acts upon it (this was tested with the latest Acrobat Reader plugin, or, in the case of Chrome, using the builtin PDF handler).

          FF3 pass (filename information not used (see Mozilla Bug 433613))
          MSIE8 pass (filename information not used)
          Opera pass (uses the filename in subsequent 'save' operation (when done through the UA's menu))
          Safari pass (uses the filename in subsequent 'save' operation (when done through the UA's menu))
          Konq pass (filename information not used)
          Chrome pass (uses the filename in subsequent 'save' operation)

          Kommentar

          Lädt...
          X