Devi probabilmente usare un piccolo wrapper...cioè...anzichè linkare al pd, linky a una pagina di download, che prende il pdf relativo, lo "apre" e lo "sputa fuori" tramite header...
Qualcosa del genere, insomma (bada che mancano delle dichiarazioni, quelle per i MIME....)

Codice PHP:

function download_pdf($download_name$file_name){
        if (!
file_exists("{$_SERVER['DOCUMENT_ROOT']}/{$file_name}")) {
            
// Errore...a scelta echo "Errore", print("errore") ecc ecc
        
}
        
force_download($download_namefile_get_contents("{$_SERVER['DOCUMENT_ROOT']}/{$file_name}"));
}

function 
force_download($filename ''$data '')
    {
        if (
$filename == '' OR $data == '')
        {
            return 
FALSE;
        }

        
// Try to determine if the filename includes a file extension.
        // We need it in order to set the MIME type
        
if (FALSE === strpos($filename'.'))
        {
            return 
FALSE;
        }

        
// Grab the file extension
        
$x explode('.'$filename);
        
$extension end($x);

        
// Load the mime types
        
if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/mimes.php'))
        {
            include(
APPPATH.'config/'.ENVIRONMENT.'/mimes.php');
        }
        elseif (
is_file(APPPATH.'config/mimes.php'))
        {
            include(
APPPATH.'config/mimes.php');
        }

        
// Set a default mime if we can't find it
        
if ( ! isset($mimes[$extension]))
        {
            
$mime 'application/octet-stream';
        }
        else
        {
            
$mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];
        }

        
// Generate the server headers
        
if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE)
        {
            
header('Content-Type: "'.$mime.'"');
            
header('Content-Disposition: attachment; filename="'.$filename.'"');
            
header('Expires: 0');
            
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            
header("Content-Transfer-Encoding: binary");
            
header('Pragma: public');
            
header("Content-Length: ".strlen($data));
        }
        else
        {
            
header('Content-Type: "'.$mime.'"');
            
header('Content-Disposition: attachment; filename="'.$filename.'"');
            
header("Content-Transfer-Encoding: binary");
            
header('Expires: 0');
            
header('Pragma: no-cache');
            
header("Content-Length: ".strlen($data));
        }

        exit(
$data);
    }