Я хочу показати своїм користувачам PDF файли. Причиною, по якій я використовую cgi для показу pdf, є те, що я хочу відслідковувати кліки pdf та маскувати реальне місце збереженого pdf.
Я шукав в Інтернеті і лише дізнався, як показати діалог збереження для користувачів та створити PDF, а не показувати файли користувачам.
Те, що я хотів, - це показати користувачам мої файли pdf, а не створювати та не завантажувати PDF. Ось що я отримав з офіційної документації на php:
<?php
header('Content-type: application/pdf');
readfile('the.pdf');
?>
Також мій код perl google-search-result:
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);
?>
Дякую! :)