Quiero mostrar archivos PDF a mis usuarios. La razón por la que uso cgi para mostrar el pdf es que quiero rastrear los clics del pdf y ocultar la ubicación real del pdf guardado.
He estado buscando en Internet y solo encontré cómo mostrar el cuadro de diálogo de guardado a los usuarios y crear un pdf, no mostrar los archivos a los usuarios.
Lo que quería era mostrar a los usuarios mis archivos pdf, no crear ni descargar el pdf. Esto es lo que obtuve de la documentación oficial de php:
<?php
header('Content-type: application/pdf');
readfile('the.pdf');
?>
También mi código Perl de resultados de búsqueda de 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
si lo haces en ruby, por favor dímelo. Pero no estoy seguro de si mi servidor admite rieles.
Lo siento si mi código está demasiado lejos del método para mostrar el pdf, ya que no sé nada sobre el procesamiento de PDF y cómo implementar este problema.
Supongamos que los usuarios tienen el complemento Adobe Reader. Entonces, ¿cómo solucionar mi problema?
editar : Quiero mostrar un archivo pdf sin formato. Mi propósito principal: rastrear mis archivos pdf y usar algunas URL elegantes.
editar : Aquí está mi código php principal:
<?php
$file='/files/the.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"');
@readfile($file);
?>
editar : Ahora el código está funcionando. Pero la barra de progreso de carga (en el complemento Adobe Reader X) no aparece. ¿Por qué? ¿Alguien puede ayudarme? Aquí está mi código principal:
<?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);
?>
editar : Todos mis problemas resueltos. Aquí está el código final:
<?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);
?>
¡Gracias! :)