ฉันต้องการแสดงไฟล์ PDF ให้กับผู้ใช้ของฉัน เหตุผลที่ฉันใช้ cgi เพื่อแสดง pdf คือฉันต้องการติดตามการคลิกสำหรับ pdf และปิดบังตำแหน่งจริงของ pdf ที่บันทึกไว้
ฉันค้นหาบนอินเทอร์เน็ตและพบเพียงวิธีแสดงกล่องโต้ตอบบันทึกให้กับผู้ใช้และสร้าง pdf เท่านั้นไม่แสดงไฟล์ให้ผู้ใช้เห็น
สิ่งที่ฉันต้องการคือแสดงให้ผู้ใช้เห็นไฟล์ pdf ของฉันไม่ใช่การสร้างหรือดาวน์โหลด pdf นี่คือสิ่งที่ฉันได้รับจากเอกสาร php อย่างเป็นทางการ:
<?php
header('Content-type: application/pdf');
readfile('the.pdf');
?>
รหัส perl ผลการค้นหาของ Google ของฉันด้วย:
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
ถ้าคุณทำกับทับทิมโปรดพูดกับฉัน แต่ฉันไม่แน่ใจว่าเซิร์ฟเวอร์ของฉันรองรับรางหรือไม่
ขออภัยหากโค้ดของฉันอยู่ห่างไกลจากวิธีการแสดง pdf มากเกินไปเนื่องจากฉันไม่รู้อะไรเลยเกี่ยวกับการประมวลผล pdf และวิธีการใช้งานปัญหานี้
สมมติว่าผู้ใช้มีปลั๊กอิน Adobe Reader แล้วจะแก้ไขปัญหาได้อย่างไร?
แก้ไข : ฉันต้องการแสดงไฟล์ pdf ธรรมดา จุดประสงค์หลักของฉัน: ติดตามไฟล์ pdf ของฉันและใช้ URL ที่สวยงาม
แก้ไข : นี่คือรหัส php หลักของฉัน:
<?php
$file='/files/the.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"');
@readfile($file);
?>
แก้ไข : ตอนนี้รหัสใช้งานได้ แต่แถบความคืบหน้าในการโหลด (บนปลั๊กอิน Adobe Reader X) ไม่ปรากฏขึ้น ทำไม? ใครก็ได้ช่วยฉันที นี่คือรหัสหลักของฉัน:
<?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);
?>
แก้ไข : ปัญหาทั้งหมดของฉันแก้ไขได้ นี่คือรหัสสุดท้าย:
<?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);
?>
ขอบคุณ! :)