Mi è capitato ultimamente di dover far scaricare un file pdf. Sia ben chiaro scaricare direttamente e non farlo aprire all’interno di un browser. Questo perché? Spesso (sopratutto con i vecchi browser come ie6 e ie7) quando si deve far scaricare un file pdf questo risulta illeggibile. In problema non è il file che è corrotto ma bensì il browser che ha un bug. Onde evitare problemi si preferisce far scaricare direttamente il file interessato, che potrebbe essere un file pdf o un cvf o un qualsiasi altro file che potrebbe aprirsi in maniera non corretta all’interno del browser.

Per risolvere questo problema PHP ci viene incontro. Come? Andando a fare un rewrite dell’estesione del file interessato. Supponiamo abbia il file nome.pdf da far scaricare; andremo ad aprire un file con estensione php per poi risostituirno con l’estensione originale. In questo modo il file verrà scaricato direttamente.

<a href="/pdf/nome.php" target="_blank" title="Clicca per saperne di più &raquo;">

<?php
$file=$_SERVER['PHP_SELF'];
$pieces = explode("/", $file);
$pieces_ok= array_reverse($pieces);
$array_file= explode(".", $pieces_ok[0]);
$nome=$array_file[0];
// We'll be outputting a PDF
header('Content-type: application/pdf');
// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="'.$nome.'.pdf"');
// The PDF source is in original.pdf
readfile($nome.'.pdf');
?>