PDF-File downloadbar machen

  • Ich möchte auf meiner erstellten Website ein PDF-File zum Download anbieten.
    Den Downloadlink habe ich schon eingebaut, aber das PDF-File wird direkt im Browser angezeigt.
    Ich hätte aber gerne das Downloadfenster, wo man auswählen kann, ob man das File speichern will oder öffnen.

    Mein Code sieht so aus

    HTML
    <a title="Weinkarte" href="Weinkarte_2016.pdf" download="Weinkarte_2016.pdf">Zum Download hier klicken</a>

    Mir steht nur HTML und CSS zur Verfügung!

    Einmal editiert, zuletzt von djlong (28. August 2016 um 19:45)

  • Jetzt bin ich neugiereig. Wie soll man das Verhalten des Browsers dahingehend beeinflussen? Ich lege doch selber in den Browsereinstellungen fest ob angezeigt oder heruntergeladen wird.

    Gegen Mods kommt man nicht an, die haben immer Recht. Sind scheinbar nicht kritikfähig.

  • Wenn die Lösung easy ist, dann kann ich auch auf andere Dinge ausweichen, als CSS und HTML!
    Jedoch muss ich es gegenüber des Prüfers auch vertreten können und erklären können.

    • Offizieller Beitrag

    Naja dann:


    Über PHP ist das eine relativ flexible Lösung, weil man in dem Script auch auf Parameter aus GET oder POST zurückgreifen kann, um bspw. ein Download-Bereich zu erstellen.

    Testlink: http://php-rocks.de/dpone/download.php


    Einfacher wäre es noch über die .htaccess ( Apache Webserver ):

    Code
    AddType application/octet-stream .pdf


    Hier kannst Du allerdings nur global sagen, dass es für alle PDF gilt.
    Mit application/octet-stream sagen wir dem Browser, dass es sich um eine ausführbare ( executable ) Datei handelt, womit wir das Standard-Öffnen Verhalten des Browsers umgehen.

    • Offizieller Beitrag

    Du benötigst nicht mal alles, das hier sollte minimal drin sein:

    PHP
    $sFileName = 'test.pdf';
    
    
    header ( 'Content-Type: application/pdf' );
    header ( 'Content-Length: ' . filesize($sFileName) );
    header ( 'Content-Disposition: attachment; filename=' . $sFileName );
    
    
    readfile( $sFileName );


    Ersetzen musst Du für Deinen Fall zunächst mal nur den Dateinamen:

    PHP
    $sFileName = 'test.pdf'; // hier einfach Deine PDF-Datei eintragen, auch mit Pfad möglich


    Der Rest kann unverändert bleiben, das war's schon.

    Wenn Du das Script für mehrere PDF-Dateien verwenden willst, solltest Du einen Parameter übergeben, in Deinem Falle wohl eher GET, also per URL/URI:

    Code
    http://www.example.com/download.php?file=meine-datei&ext=pdf


    Dann müsste das Script so in etwa angepasst werden:

    Hier schaust Du halt erst, ob es den Parameter 'file' in der URI gibt und bastelst Dir damit den Pfad zur Datei zusammen ( $sFilePath ).
    Dann prüfst Du noch, ob es sich überhaupt um eine Datei handelt und definierst dann den Header und liest die Datei, die dann wieder an den Browser gesendet wird und automatisch runtergeladen wird.

  • Zitat von Arne Drews

    Ja, das sagte ich ja! Du kannst das nicht beeinflussen. Damit meine ich, dass ich es per HTML und CSS nicht beeinflussen kann, wie ein PDF bei Dir im Browser verarbeitet wird.


    Dein test.pdf wird bei mir heruntergeladen, so ist es im FF eingestellt, verwundert also nicht. Du kannst es jetzt beeinflussen, dass die test.pdf nicht heruntergeladen, sondern direkt im Browserfenster angezeigt wird?
    Oder geht das nur umgekehrt, also statt direkt anzuzeigen einen Download initiieren?

    Ich gehe aber davon aus, djlong meint nicht per PHP erstellte PDF-Dateien, sondern eher mit z.B. einem PDF-Druckertreiber auf dem heimischen PC erstellte Dateien.

    Gegen Mods kommt man nicht an, die haben immer Recht. Sind scheinbar nicht kritikfähig.

    • Offizieller Beitrag
    Zitat von Gastl

    Dein test.pdf wird bei mir heruntergeladen, so ist es im FF eingestellt, verwundert also nicht. Du kannst es jetzt beeinflussen, dass die test.pdf nicht heruntergeladen, sondern direkt im Browserfenster angezeigt wird?
    Oder geht das nur umgekehrt, also statt direkt anzuzeigen einen Download initiieren?

    Ja, mir wäre jetzt nur der Weg bekannt. Ein Öffnen zu forcieren kenne ich nicht.

    Zitat von Gastl

    Ich gehe aber davon aus, djlong meint nicht per PHP erstellte PDF-Dateien, sondern eher mit z.B. einem PDF-Druckertreiber auf dem heimischen PC erstellte Dateien.


    Ich erstelle ja auch keine PDF online, sondern lade mit readfile() eine auf dem Server liegende.
    Aber die möchte er doch online als Download zur Verfügung stellen, ohne dass sie vom Browser automatisch geöffnet wird?!

    Jedenfalls habe ich das so verstanden:

    Zitat von djlong

    Ich möchte auf meiner erstellten Website ein PDF-File zum Download anbieten.
    Den Downloadlink habe ich schon eingebaut, aber das PDF-File wird direkt im Browser angezeigt.
    Ich hätte aber gerne das Downloadfenster, wo man auswählen kann, ob man das File speichern will oder öffnen.


    :confused:

  • Ähm...ok das kann ich gegenüber meines Prüfers nicht rechtfertigen. Bei dem Code und deinen Abkürzungen GET, URI etc. habe ich keine Ahnung wovon du redest ;)

    Ich habe das PDF-File auf meinem Webserver liegen und von dort ruf ichs auch mit meinem Downloadlink ab ;)
    Ich glaube, ich lebe einfach damit, dass das PDF-File im Browser geöffnet wird

    • Offizieller Beitrag
    Zitat von djlong

    Ich glaube, ich lebe einfach damit, dass das PDF-File im Browser geöffnet wird

    Ist ja auch keine schlechte Variante, die Browser stellen das ja mittlerweile sehr schön dar.
    Unangenehm wird es erst bei großen PDF's, da die Ladezeit i.d.R. sich dann auch erhöht. Aber da puffern die Browser mittlerweile auch schon, wenn ich mich nicht irre.

  • Man wird halt dann von der Website geschmissen und kann nur noch mit "ZURÜCK" oder nochmaliger Eingabe der URL zurück auf die Website.
    Das war der Punkt, der mich gestört hat!