Chcę pokazać moim użytkownikom pliki PDF. Powodem, dla którego używam cgi do wyświetlania pliku PDF, jest to, że chcę śledzić kliknięcia pliku PDF i ukryć rzeczywistą lokalizację zapisanego pliku PDF.
Szukałem w Internecie i odkryłem tylko, jak pokazać użytkownikom okno dialogowe zapisywania i stworzyć plik PDF, a nie pokazać pliki użytkownikom.
Chciałem pokazać użytkownikom moje pliki PDF, a nie tworzyć ani pobierać pliku PDF. Oto, co otrzymałem z oficjalnej dokumentacji php:
<?php
header('Content-type: application/pdf');
readfile('the.pdf');
?>
Również mój kod perl wyników wyszukiwania 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
jeśli zrobisz to na rubinie, powiedz mi to. Ale nie jestem pewien, czy mój serwer obsługuje szyny.
Przepraszam, jeśli mój kod jest zbyt daleko od metody, aby wyświetlić plik PDF, ponieważ nie wiem nic o przetwarzaniu plików PDF i jak wdrożyć ten problem.
Załóżmy, że użytkownicy mają wtyczkę Adobe Reader. Jak więc rozwiązać mój problem?
edycja : chcę pokazać zwykły plik pdf. Mój główny cel: śledzenie moich plików PDF i używanie wyszukanych adresów URL.
edycja : Oto mój główny kod php:
<?php
$file='/files/the.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"');
@readfile($file);
?>
edycja : Teraz kod działa. Ale pasek postępu ładowania (we wtyczce Adobe Reader X) nie pojawia się. Czemu? Czy ktoś może mi pomóc? Oto mój główny kod:
<?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);
?>
edycja : wszystkie moje problemy rozwiązane. Oto ostateczny kod:
<?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);
?>
Dzięki! :)