Um dem Browser anzuzeigen, dass die Datei im Browser angezeigt werden soll, sollte die HTTP- Antwort folgende Header enthalten:
Content-Type: application/pdf
Content-Disposition: inline; filename="filename.pdf"
So laden Sie die Datei herunter, anstatt sie anzuzeigen:
Content-Type: application/pdf
Content-Disposition: attachment; filename="filename.pdf"
Die Anführungszeichen um den Dateinamen sind erforderlich, wenn der Dateiname Sonderzeichen enthält, filename[1].pdf
die andernfalls die Fähigkeit des Browsers beeinträchtigen können, die Antwort zu verarbeiten.
Wie Sie die HTTP-Antwortheader festlegen, hängt von Ihrem HTTP-Server ab (oder, wenn Sie die PDF-Antwort aus serverseitigem Code generieren: Ihrer serverseitigen Programmiersprache).
Wenn Sie HTML5 verwenden (und ich denke, dass heutzutage jeder das verwendet), gibt es ein Attribut namens
download
.Beispielsweise,
Hier
filename
ist optional, aber falls angegeben, wird dieser Name für die heruntergeladene Datei verwendet.quelle
Der richtige Typ ist
application/pdf
für PDF, nichtapplication/force-download
. Dies sieht für einige ältere Browser wie ein Hack aus. Verwenden Sie immer den richtigen Mimetyp, wenn Sie können.Wenn Sie die Kontrolle über den Servercode haben:
header("Content-Disposition", "attachment; filename=myfilename.myextension");
header("Content-Disposition", "inline; filename=myfilename.myextension");
Keine Kontrolle über den Servercode:
HINWEIS: Ich bevorzuge es, den Dateinamen auf der Serverseite festzulegen, da Sie möglicherweise mehr Informationen haben und allgemeinen Code verwenden können.
quelle
Wenn Sie Apache haben, fügen Sie dies der
.htaccess
Datei hinzu:quelle
Hoppla, in meinem vorherigen Beitrag gab es Tippfehler.
Wenn Sie nicht möchten, dass der Browser den Benutzer dazu auffordert, verwenden Sie "inline" für die dritte Zeichenfolge anstelle von "Anhang". Inline funktioniert sehr gut. Die PDF-Anzeige wird sofort angezeigt, ohne dass der Benutzer aufgefordert wird, auf Öffnen zu klicken. Ich habe "Anhang" verwendet und dies fordert den Benutzer zum Öffnen, Speichern auf. Ich habe versucht, die Browser-Einstellungsmutter zu ändern, die die Eingabeaufforderung nicht verhindert.
quelle
Dies ist für ASP.NET MVC
Auf Ihrer cshtml-Seite:
In Ihrem Controller:
quelle
Während das Folgende unter Firefox gut funktioniert, funktioniert es NICHT unter Chrome und mobilen Browsern.
Gehen Sie wie folgt vor, um den Fehler bei Chrome- und mobilen Browsern zu beheben:
Google PDF Viewer kann folgendermaßen verwendet werden:
quelle
Öffnen Sie downloads.php aus der Root-Datei.
Gehen Sie dann zu Zeile 186 und ändern Sie sie wie folgt:
quelle
Sie können dies folgendermaßen tun:
Wenn sich die PDF-Datei in einem Ordner befindet und dieser Ordner nicht berechtigt ist, direkt auf Dateien in diesem Ordner zuzugreifen, müssen Sie einige Dateizugriffsbeschränkungen mithilfe der
.htaccess
Dateieinstellung auf folgende Weise umgehen :Erlauben Sie jetzt aber nur bestimmte notwendige Dateien.
Ich habe diesen Code verwendet und er hat perfekt funktioniert.
quelle
Entweder verwenden
<embed src="file.pdf" />
Wenn das Einbetten eine Option oder mein neues Plugin ist, PIFF: https://github.com/terrasoftlabs/piff
quelle
Hier ist eine andere Methode, um das Anzeigen einer Datei im Browser in PHP zu erzwingen:
quelle
header
funktioniert nicht, nachdem Sie mit der Ausgabe des Anforderungshauptteils begonnen haben (und es wird keine Zeichenfolge zum Verketten in einem HTML-Dokument zurückgegeben)Öffnen Sie einfach Adobe Reader, Menü → Bearbeiten → Einstellungen → Internet , wechseln Sie in den Browsermodus oder versuchen Sie, detaillierte Anweisungen in verschiedenen Browsern anzuzeigen, PDF im Browser anzeigen | Acrobat, Acrobat Reader .
quelle
Wenn Sie eine Verknüpfung zu einer PDF-Datei herstellen, wird diese im Browser geöffnet.
Wenn das Kontrollkästchen deaktiviert ist, sollte eine Verknüpfung zu einer ZIP-Datei hergestellt werden, um den Download zu erzwingen.
Wenn eine ZIP-Datei keine Option ist, verwenden Sie Header in PHP, um den Download zu erzwingen
quelle