Ergebnis 1 bis 21 von 21

Thema: PDF im Browser anzeigen

  1. #1
    Contao-Nutzer
    Registriert seit
    16.08.2009.
    Beiträge
    51

    Standard PDF im Browser anzeigen

    Hallo,
    nachdem das mit dem Download-Verzeichnis geklärt ist, kommt mir gleich die nächste Frage: Wie kann ich Contao dazu veranlassen, die pdf-Datei direkt im Browser (bei entsprechend aktiviertem Browser-Plugin) anzuzeigen, ohne dass der Download gestartet wird?

    umsteiger

  2. #2
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.335
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Aus dem Bauch heraus:
    Code:
    <FilesMatch "\.(?i:pdf)$">
        ForceType application/octet-stream
        Header set Content-Disposition inline
    </FilesMatch>

  3. #3
    Contao-Nutzer
    Registriert seit
    16.08.2009.
    Beiträge
    51

    Standard

    Schön, schön, und wohin damit?

  4. #4
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.335
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wo werden denn Header gesetzt?

    ;-)

  5. #5
    Contao-Nutzer
    Registriert seit
    16.08.2009.
    Beiträge
    51

    Standard

    Hallo,
    das mit der Ergänzung in htaccess hat leider nicht geklappt. Ich habe das Problem etwas eingegrenzt:
    Im Template ce_downloads steht:
    HTML-Code:
    <a href="<?= $file['href'] ?>
    , welches in meinem Fall jetzt als Link dieses hier produziert:
    HTML-Code:
    <a href="index.php/magazin.html?file=files/magazin/magazin_2016_01.pdf"
    . Und das ruft den Download-Dialog auf. Jetzt habe ich
    HTML-Code:
    <?= $file['href'] ?
    durch folgendes ersetzt:
    HTML-Code:
    files/magazin/magazin_2016_01.pdf
    und es öffnet sich die pdf-Datei im Browser, ohne htaccess-Anpassung.
    Jetzt stellt sich die Frage, wie bekomme ich nur den Pfad zur Datei angezeigt ohne
    HTML-Code:
    index.php/magazin.html?file=
    .

    Gruß
    umsteiger

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Beispiel:
    PHP-Code:
    <?php foreach ($this->files as $file): ?>
    <?php
      
    /* Neuer Code */
      #dump($file['href']);
      
    if($file['extension'] == 'pdf')
      {
        
    $file['href'] = str_replace(TL_ROOT.'/'''$file['path']).'/'.$file['name'];
      }
      
    #dump($file['href']);
    ?>
    Das index.php bekommst du weg, indem du die .htaccess.default umbenennst nach .htaccess und in den Einstellungen die URL-Umschreibung aktivierst.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  7. #7
    Contao-Nutzer
    Registriert seit
    16.08.2009.
    Beiträge
    51

    Standard

    Danke, das war die Lösung.
    Ich habe jetzt einfach in ce_downloads das
    HTML-Code:
    $file['href']
    durch
    HTML-Code:
    $file['href'] = str_replace(TL_ROOT.'/', '', $file['path']).'/'.$file['name']
    ersetzt und alles funzt.

    umsteiger

  8. #8
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das wäre irgendwie nicht ganz richtig. Wenn du es für alle Dateitypen möchtest, dann entweder so
    PHP-Code:
    <?php foreach ($this->files as $file): ?>
    <?php
      $file
    ['href'] = str_replace(TL_ROOT.'/'''$file['path']).'/'.$file['name'];
    ?>
    Oder so
    PHP-Code:
    ...<a href="<?= $file['href'?>" title=...

    Neu:
    ...<a href="<?= str_replace(TL_ROOT.'/'''$file['path']).'/'.$file['name'?>" title=...
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  9. #9
    Contao-Nutzer
    Registriert seit
    16.08.2009.
    Beiträge
    51

    Standard

    OK, da es nur um pdf geht, habe ich die zweite Variante genommen.

    Danke schön.
    umsteiger

  10. #10
    Contao-Nutzer
    Registriert seit
    22.04.2012.
    Beiträge
    7

    Standard

    Ich hatte genau das gleiche Problem und es so gemacht:

    Zitat Zitat von umsteiger Beitrag anzeigen
    Danke, das war die Lösung.
    Ich habe jetzt einfach in ce_downloads das
    HTML-Code:
    $file['href']
    durch
    HTML-Code:
    $file['href'] = str_replace(TL_ROOT.'/', '', $file['path']).'/'.$file['name']
    ersetzt und alles funzt.
    Funktioniert auch anscheinend alles wie es soll.

    Inwiefern ist die erste Lösung nicht richtig, wie hier geschrieben:

    Zitat Zitat von Andreas Beitrag anzeigen
    Das wäre irgendwie nicht ganz richtig. Wenn du es für alle Dateitypen möchtest, dann entweder so
    PHP-Code:
    <?php foreach ($this->files as $file): ?>
    <?php
      $file
    ['href'] = str_replace(TL_ROOT.'/'''$file['path']).'/'.$file['name'];
    ?>
    Oder so
    PHP-Code:
    ...<a href="<?= $file['href'?>" title=...

    Neu:
    ...<a href="<?= str_replace(TL_ROOT.'/'''$file['path']).'/'.$file['name'?>" title=...
    Viele Grüße, Tom

  11. #11
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das was in Post #8 steht ist beides richtig, das obere finde ich persönlich übersichtlicher, weil ich die Variable $file['href'] dort separat neu befülle und an dieser Stelle auch nochmal eine Einschränkung auf bestimmte Dateitypen machen könnte. An dieser Stelle könnte ich auch noch einen Kommentar einfügen um später schnell zu sehen, was geändert wurde. Und weil die Stelle an welcher die Variable $file['href'] eingebunden wird so belassen wird wie sie im O-Template ist.

    Was nicht ganz richtig gewesen wäre war das, was @umsteiger in #7 geschrieben hat. Danach würde es in seinem Template so aussehen:
    PHP-Code:
    Alt:
    ...<a href="<?= $file['href'?>" title=...

    Neu:
    ...<a href="<?= $file['href'] = str_replace(TL_ROOT.'/'''$file['path']).'/'.$file['name'?>" title=...
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  12. #12
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ach so, schon wieder vergessen zu sagen. Dadurch verliert man den Schutz der Dateien auf geschützten Seiten. Wer den Link kennt, kommt an die Datei ran. Das dürfte eigentlich mit dem Original-Template nicht der Fall sein.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  13. #13
    Contao-Nutzer
    Registriert seit
    15.10.2009.
    Ort
    Dresden
    Beiträge
    109

    Standard In Contao 3.5

    Ich habe es bei mir mit folgender Änderung in der .../library/Contao/File.php hinbekommen (auch wenn ich noch nicht weiß, ob es Seiteneffekte hat).

    Vorher:
    PHP-Code:
        header('Content-Disposition: attachment; filename="' . ($filename ?: $this->basename) . '"'); 
    Nachher:
    PHP-Code:
    if ($this->extension == 'pdf'){
        
    header('Content-Disposition: inline; filename="' . ($filename ?: $this->basename) . '"');
    } else {
        
    header('Content-Disposition: attachment; filename="' . ($filename ?: $this->basename) . '"');


  14. #14
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Nunja, update-sicher ist das jedenfalls nicht

    Gesendet von meinem D5803 mit Tapatalk

  15. #15
    Contao-Nutzer
    Registriert seit
    15.10.2009.
    Ort
    Dresden
    Beiträge
    109

    Standard

    Stimmt, update sicher ist es nicht. Ich glaube aber in Version 4 ist das aber besser umgesetzt. Zumindest war auf der Contao Demo das so, dass sich PDFs im Browser öffnen


    Gesendet von iPhone mit Tapatalk

  16. #16
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Echt? Auf welcher Seite der Demo ist denn das? Die einzigen Downloads, die ich auf die Schnelle da finde, sind Bilder (.jpg). Und nicht mal die werden im Browser geöffnet.

  17. #17
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Und wenn ich meinen Browser jetzt so einstelle, dass er mir genau diese Anwort als Download anbieten soll? Dann hast du eine Anpassung im Core, die nichts bringt. Die Templateanpassung ist die einfache und updatesichere Lösung.

    Was meinst du mit in C4 ist es besser? Wird die Datei dort auch per PHP ausgeliefert um so das Ausliefern aus gesperrten Verzeichnissen anzubieten aber es wird ein anderer Header gesendet, der die default Browsereinstellung nicht dazu animiert einen Download anzubieten?
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  18. #18
    Contao-Nutzer
    Registriert seit
    15.10.2009.
    Ort
    Dresden
    Beiträge
    109

    Standard

    Zitat Zitat von tab Beitrag anzeigen
    Echt? Auf welcher Seite der Demo ist denn das? Die einzigen Downloads, die ich auf die Schnelle da finde, sind Bilder (.jpg). Und nicht mal die werden im Browser geöffnet.
    Ich hatte eine Seite im Editor bearbeitet und einen Link eimgebaut der auf eine PDF aus dem Dateien von der Demo zeigt.

    Im Frontend hat ein Klick auf den Link die Datei inline im Brower geladen und angezeigt.

    Im gleichen Browser ohne irgendwelche Einstellungen des Browseres zu ändern, wurde auf meiner Contao 3.5 ein klick auf solch einem Link mit dem Download der Datei beantwortet.


    Gesendet von iPhone mit Tapatalk

  19. #19
    Contao-Nutzer
    Registriert seit
    15.10.2009.
    Ort
    Dresden
    Beiträge
    109

    Standard

    Zitat Zitat von Andreas Beitrag anzeigen
    Und wenn ich meinen Browser jetzt so einstelle, dass er mir genau diese Anwort als Download anbieten soll? Dann hast du eine Anpassung im Core, die nichts bringt. Die Templateanpassung ist die einfache und updatesichere Lösung.

    Was meinst du mit in C4 ist es besser? Wird die Datei dort auch per PHP ausgeliefert um so das Ausliefern aus gesperrten Verzeichnissen anzubieten aber es wird ein anderer Header gesendet, der die default Browsereinstellung nicht dazu animiert einen Download anzubieten?
    Ich weiß nicht was man am Browser konfigurieren muss, dass er PDFs generell herunterlädt.

    Der Kunde wünschte, dass ein Klick auf den PDF Link inline im Browser die PDF anzeigt. Wie das in Contao 3.5 und 4 genau funktioniert kann ich nicht sagen. Vermute beides wird mit PHP ausgeliefert und es wird beim Senden eine Header Eigenschaft gesetzt auf die der Client (Browser) reagiert.

    Das ist erst mal der Default der vom Server kommt und ja man kann vermutlich auch im
    browser was erzwingen. Ähnlich wie "links in neuem Fenster öffnen" erwingt ja auch ein neues Tab oder fenster obwohl kein target blank im a-Tag definiert wurde


    Gesendet von iPhone mit Tapatalk

  20. #20
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Na ein Link auf ein PDF wird mir auch im Browser angezeigt - sofern der Browser das kann, was alles andere als selbstverständlich ist. Ein Download dagegen lässt mich speichern oder in einem Programm meiner Wahl anzeigen.

  21. #21
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von x-ray Beitrag anzeigen
    Ich weiß nicht was man am Browser konfigurieren muss, dass er PDFs generell herunterlädt.
    Screen-2017-01-24_23-23-04.png
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •