Czy istnieje sposób na wymuszenie otwierania plików PDF w przeglądarce, gdy nie jest zaznaczona opcja „Wyświetlaj PDF w przeglądarce”?
Próbowałem użyć tagu embed i iframe, ale działa to tylko wtedy, gdy ta opcja jest zaznaczona.
Co mogę zrobić?
Czy istnieje sposób na wymuszenie otwierania plików PDF w przeglądarce, gdy nie jest zaznaczona opcja „Wyświetlaj PDF w przeglądarce”?
Próbowałem użyć tagu embed i iframe, ale działa to tylko wtedy, gdy ta opcja jest zaznaczona.
Co mogę zrobić?
Aby wskazać przeglądarce, że plik powinien być przeglądany w przeglądarce, odpowiedź HTTP powinna zawierać następujące nagłówki:
Content-Type: application/pdf
Content-Disposition: inline; filename="filename.pdf"
Aby pobrać plik zamiast go obejrzeć:
Content-Type: application/pdf
Content-Disposition: attachment; filename="filename.pdf"
Cudzysłowy wokół nazwy pliku są wymagane, jeśli nazwa pliku zawiera znaki specjalne, takie, filename[1].pdf
które w przeciwnym razie mogłyby zakłócić zdolność przeglądarki do obsługi odpowiedzi.
Sposób ustawienia nagłówków odpowiedzi HTTP będzie zależeć od serwera HTTP (lub, jeśli generujesz odpowiedź PDF z kodu po stronie serwera: twój język programowania po stronie serwera).
Jeśli używasz HTML5 (i myślę, że obecnie wszyscy go używają), istnieje atrybut o nazwie
download
.Na przykład,
Tutaj
filename
nie jest obowiązkowe, ale jeżeli jest, to zajmie to nazwę pobranego pliku.źródło
Prawidłowy typ dotyczy
application/pdf
pliku PDF, a nieapplication/force-download
. To wygląda jak włamanie do niektórych starszych przeglądarek. Zawsze używaj prawidłowego typu mimet, jeśli możesz.Jeśli masz kontrolę nad kodem serwera:
header("Content-Disposition", "attachment; filename=myfilename.myextension");
header("Content-Disposition", "inline; filename=myfilename.myextension");
Brak kontroli nad kodem serwera:
UWAGA: Wolę ustawić nazwę pliku po stronie serwera, ponieważ możesz mieć więcej informacji i używać wspólnego kodu.
źródło
Jeśli masz Apache, dodaj to do
.htaccess
pliku:źródło
Ups, w moim poprzednim poście wystąpiły błędy pisowni.
Jeśli nie chcesz, aby przeglądarka pytała użytkownika, użyj „inline” dla trzeciego ciągu zamiast „załącznika”. Inline działa bardzo dobrze. Plik PDF zostanie wyświetlony natychmiast, bez pytania użytkownika o kliknięcie Otwórz. Użyłem „załącznika”, a to poprosi użytkownika o otwarcie, zapisz. Próbowałem zmienić nakrętkę ustawienia przeglądarki, co nie zapobiega wyświetlaniu monitu.
źródło
To jest dla ASP.NET MVC
Na twojej stronie cshtml:
W twoim kontrolerze:
źródło
Podczas gdy poniższe działa dobrze na Firefox, NIE działa na przeglądarkach Chrome i mobilnych.
Aby naprawić błąd przeglądarki Chrome i przeglądarki mobilnej, wykonaj następujące czynności:
Przeglądarka Google PDF może być używana w następujący sposób:
źródło
Otwórz downloads.php z pliku root.
Następnie przejdź do linii 186 i zmień ją na:
źródło
Możesz to zrobić w następujący sposób:
Jeśli plik PDF znajduje się w jakimś folderze i ten folder nie ma uprawnień do bezpośredniego dostępu do plików w tym folderze, musisz ominąć niektóre ograniczenia dostępu do
.htaccess
plików przy użyciu ustawień pliku w ten sposób:Ale teraz zezwól tylko na niektóre niezbędne pliki.
Użyłem tego kodu i działał idealnie.
źródło
Albo użyj
<embed src="file.pdf" />
jeśli osadzanie jest opcją lub moją nową wtyczką, PIFF: https://github.com/terrasoftlabs/piff
źródło
Oto kolejna metoda wymuszenia wyświetlenia pliku w przeglądarce w PHP:
źródło
header
nie działa po rozpoczęciu wypisywania treści żądania (i nie zwraca ciągu do konkatenacji w dokumencie HTML)Wystarczy otworzyć Adobe Reader, menu → Edytuj → Preferencje → Internet , a następnie przejść do trybu przeglądarki lub uzyskać szczegółowe instrukcje w różnych przeglądarkach. Spróbuj wyświetlić PDF w przeglądarce | Acrobat, Acrobat Reader .
źródło
Jeśli link do pliku .PDF otworzy się w przeglądarce.
Jeśli pole nie jest zaznaczone, powinno zawierać link do pliku .zip, aby wymusić pobranie.
Jeśli .zip nie jest opcją, użyj nagłówków w PHP, aby wymusić pobieranie
źródło