[Php-it] salvataggio/apertura pdf

marco gmpml at empire-web.it
Mon Apr 10 18:28:29 CEST 2006


>>> Marco wrote:
>>>  ciao a tutti, creo un  pdf con fpdf e obbligo il browser ad aprire la 
>>> finestra "apri/salva/annulla" invece di aprire direttamente il file.
>>> ok, ma mentre "salva" funzia cliccando "apri" acrobat (6.0 standard) 
>>> parte
>>> ma mi dice "Errore durante l'apertura del documento. Impossibile trovare
>>> questo file."


>> Cimoli Alessandro ha scritto:
>> Per caso usi le sessioni nella pagina?
>> E quindi? Nella pagina in cui fai fare il download (salva/apri) di un pdf 
>> non devi usare le sessioni? Oppure c'è un altro metodo?


> From: "Giovanni Battista Lenoci" <gianiaz at gianiaz.net>
> devi usare le funzioni di output buffering


ciao, scusami, magari ne so poco sull'output buffering: io faccio cosi' 
all'incirca:


@include_once "_inc/config.php"; // session start e check login
ob_start();

@define("FPDF_FONTPATH",$rootfile."/_pdf/font/");
@include_once $rootfile."/_pdf/fpdf.php";
class PDF extends FPDF.......// costruzione del pdf

$filedir=tempnam($dir,"_tmp");
$filename=basename($filedir);
$pdf->Output($filedir);
@rename($filedir,$filedir.".pdf");
$filename.=".pdf";
$filedir.=".pdf";
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    header('Pragma: public');
    header('Expires: 0');
    header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
    header("Content-Length: ".(string)(filesize($filedir)));
    if 
(preg_match('#Opera(/| )([0-9].[0-9]{1,2})#',getenv('HTTP_USER_AGENT')) or 
preg_match('#MSIE
([0-9].[0-9]{1,2})#',getenv('HTTP_USER_AGENT'))) {
      header("Content-Type: application/pdf");
    } else {
      header("Content-Type: application/pdf");
    }
    header("Content-Type: application/force-download");
    header("Content-Type: application/download");
    header("Content-Type: application/save");
    header("Content-Disposition: attachment; 
filename=DbParlamento2006__".$pl_nome."_".$pl_cognome.".pdf");
    $fp=@readfile($filedir);
    @sleep(3);  // altrimenti talvolta non fa in tempo a creare il file
    if(!@fpassthru($fp)){
     echo 'Errore: file non creato! <a href="#" 
onclick="history.go(-1)">Riprovare cliccando qui</a>, grazie.'; exit(); }
    fclose($fp);
    ob_end_flush();
    exit();


è un casino? consigli?
forse è $pdf->Output($filedir); che manda l'output?
grazie, ciao

--
marco
gggmmmppp at interfree.it 




More information about the Php-it mailing list