Apakah ada cara untuk memaksa file PDF untuk dibuka di browser ketika opsi "Tampilkan PDF di browser" tidak dicentang?
Saya mencoba menggunakan tag embed dan iframe, tetapi hanya berfungsi ketika opsi itu dicentang.
Apa yang dapat saya?
Untuk menunjukkan kepada browser bahwa file harus dilihat di browser, respons HTTP harus menyertakan tajuk ini:
Content-Type: application/pdf
Content-Disposition: inline; filename="filename.pdf"
Agar file diunduh daripada dilihat:
Content-Type: application/pdf
Content-Disposition: attachment; filename="filename.pdf"
Kutipan di sekitar nama file diperlukan jika nama file berisi karakter khusus seperti filename[1].pdf
yang dapat merusak kemampuan browser untuk menangani respons.
Cara Anda mengatur header respons HTTP akan bergantung pada server HTTP Anda (atau, jika Anda menghasilkan respons PDF dari kode sisi server: bahasa pemrograman sisi server Anda).
Jika Anda menggunakan HTML5 (dan saya kira saat ini semua orang menggunakannya), ada atribut yang disebut
download
.Sebagai contoh,
Ini
filename
opsional, tetapi jika disediakan, nama ini akan diambil untuk file yang diunduh.sumber
Jenis yang benar adalah
application/pdf
untuk PDF, bukanapplication/force-download
. Ini terlihat seperti retasan untuk beberapa browser lawas. Selalu gunakan mimetype yang benar jika Anda bisa.Jika Anda memiliki kendali atas kode server:
header("Content-Disposition", "attachment; filename=myfilename.myextension");
header("Content-Disposition", "inline; filename=myfilename.myextension");
Tidak ada kontrol atas kode server:
CATATAN: Saya lebih suka mengatur nama file di sisi server karena Anda mungkin memiliki informasi lebih lanjut dan dapat menggunakan kode umum.
sumber
Jika Anda memiliki Apache, tambahkan ini ke
.htaccess
file:sumber
Ups, ada kesalahan pengetikan di pos saya sebelumnya.
Jika Anda tidak ingin browser meminta pengguna, gunakan "inline" untuk string ketiga alih-alih "lampiran". Inline bekerja dengan sangat baik. Tampilan PDF segera tanpa meminta pengguna untuk mengklik Open. Saya telah menggunakan "lampiran" dan ini akan meminta pengguna untuk Buka, Simpan. Saya sudah mencoba mengubah mur pengaturan browser itu tidak mencegah prompt.
sumber
Ini untuk ASP.NET MVC
Di halaman cshtml Anda:
Di controller Anda:
sumber
Sementara yang berikut ini berfungsi dengan baik di firefox, itu TIDAK bekerja pada browser chrome dan seluler.
Untuk memperbaiki kesalahan chrome & browser seluler, lakukan hal berikut:
Google PDF Viewer dapat digunakan sebagai berikut:
sumber
Buka downloads.php dari rootfile.
Lalu buka baris 186 dan ubah menjadi yang berikut:
sumber
Anda dapat melakukan ini dengan cara berikut:
Jika file PDF ada di dalam beberapa folder dan folder itu tidak memiliki izin untuk mengakses file di folder itu secara langsung, maka Anda harus melewati beberapa pembatasan akses
.htaccess
file menggunakan pengaturan file dengan cara ini:Tetapi sekarang izinkan saja file-file tertentu yang diperlukan.
Saya telah menggunakan kode ini dan bekerja dengan sempurna.
sumber
Baik digunakan
<embed src="file.pdf" />
jika embedding adalah opsi atau plugin baru saya, PIFF: https://github.com/terrasoftlabs/piff
sumber
Berikut adalah metode lain untuk memaksa file melihat di browser dalam PHP:
sumber
header
tidak berfungsi setelah Anda mulai menghasilkan badan permintaan (dan tidak mengembalikan string untuk digabungkan dalam dokumen HTML)Cukup buka Adobe Reader, menu → Edit → Preferences → Internet , lalu ubah ke mode peramban atau untuk petunjuk terperinci tentang berbagai peramban, coba Tampilkan PDF di peramban | Acrobat, Acrobat Reader .
sumber
Jika Anda menautkan ke .PDF itu akan terbuka di browser.
Jika kotak ini tidak dicentang, kotak itu harus terhubung ke .zip untuk memaksa unduhan.
Jika .zip bukan opsi, gunakan header di PHP untuk memaksa unduhan
sumber