Saya ingin menampilkan file PDF pengguna saya. Alasan mengapa saya menggunakan cgi untuk menampilkan pdf adalah saya ingin melacak klik untuk pdf, dan menyembunyikan lokasi sebenarnya dari pdf yang disimpan.
Saya telah mencari di Internet dan hanya menemukan cara menampilkan dialog simpan kepada pengguna dan membuat pdf, bukan menampilkan file kepada pengguna.
Yang saya inginkan adalah menunjukkan kepada pengguna file pdf saya, bukan membuat atau mengunduh pdf. Inilah yang saya dapatkan dari dokumentasi resmi php:
<?php
header('Content-type: application/pdf');
readfile('the.pdf');
?>
Juga kode perl hasil pencarian google saya:
open(PDF, "the.pdf") or die "could not open PDF [$!]";
binmode PDF;
my $output = do { local $/; <PDF> };
close (PDF);
print "Content-Type: application/pdf\n";
print "Content-Length: " .length($output) . "\n\n";
print $output
jika Anda melakukannya dengan ruby, tolong katakan padaku. Tapi saya tidak yakin apakah dukungan server saya benar.
Maaf jika kode saya terlalu jauh dari metode untuk menampilkan pdf, karena saya tidak tahu apa-apa tentang pemrosesan pdf dan bagaimana menerapkan masalah ini.
Mari kita asumsikan bahwa pengguna memiliki plug-in Adobe Reader. Jadi, bagaimana cara mengatasi masalah saya?
edit : Saya ingin menampilkan file pdf biasa. Tujuan utama saya: melacak file pdf saya dan menggunakan beberapa url mewah.
edit : Inilah kode php utama saya:
<?php
$file='/files/the.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"');
@readfile($file);
?>
edit : Sekarang kode bekerja. Tetapi bilah kemajuan pemuatan (pada plugin Adobe Reader X) tidak muncul. Mengapa? Ada yang bisa membantu saya? Inilah kode utama saya:
<?php
$file='./files/the.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
@readfile($file);
?>
edit : Semua masalah saya terpecahkan. Inilah kode terakhirnya:
<?php
$file = './path/to/the.pdf';
$filename = 'Custom file name for the.pdf'; /* Note: Always use .pdf at the end. */
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
@readfile($file);
?>
Terima kasih! :)
Jawaban:
Saya berasumsi bahwa Anda ingin PDF ditampilkan di browser, daripada memaksakan unduhan. Jika demikian, coba setel
Content-Disposition
header dengan nilaiinline
.Ingat juga bahwa ini juga akan dipengaruhi oleh pengaturan browser - beberapa browser mungkin dikonfigurasi untuk selalu mendownload file PDF atau membukanya di aplikasi lain (mis. Adobe Reader)
sumber
Diuji dan berfungsi dengan baik. Jika Anda ingin file diunduh, ganti
dengan
sumber
Anda dapat memodifikasi perender PDF seperti xpdf atau bahkan untuk merender menjadi gambar grafik di server Anda, dan kemudian mengirimkan gambar tersebut ke pengguna. Beginilah cara kerja quick view Google terhadap file PDF, mereka merendernya secara lokal, kemudian mengirimkan gambar ke pengguna. Tidak ada file PDF yang diunduh, dan sumbernya cukup dikaburkan. :)
sumber
Cara paling aman untuk memiliki tampilan PDF daripada mengunduh tampaknya menyematkannya menggunakan elemen
object
atauiframe
. Ada juga solusi pihak ketiga seperti penampil PDF Google.Lihat Cara Terbaik untuk Menyematkan PDF dalam HTML untuk ikhtisar.
Ada juga DoPDF , penampil PDF dalam browser berbasis Java. Saya tidak dapat berbicara tentang kualitasnya tetapi ini terlihat menarik.
sumber
Anda juga dapat menggunakan kelas fpdf yang tersedia di: http://www.fpdf.org . Ini memberikan opsi untuk mengeluarkan ke file dan ditampilkan di browser.
sumber