Re: IE can't download, FF can: SSL ? Need special headers?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, May 22, 2009 at 11:21 AM, Dee Ayy <dee.ayy@xxxxxxxxx> wrote:

> Kyle,
> Well I guess that is good news.  But I don't trust these headers since
> the filename is not being set.  But that was even before this IE
> issue.
>
> Bastien,
> I don't understand how I could "save the file to the hard disk" from
> IE.  But yes, I save the file (it gets saved as my_php_file.php on the
> hard disk when using FF) which I then rename to my_php_file.pdf, and
> then I open that in a PDF viewer.  But IE claims that the "site is
> either unavailable or cannot be found".
>


Why are you saving the file first as PHP and then renaming to PDF?
Below is the code that I use (which uses the DOMPDF class from
digitaljunkies.ca

<?php
/*
  createPDF creates a pdf and streams it to the user if FF / O / S or saves
it and forces a download if IE

  $html         -> the html page used to create the content
  $thisFileName -> is the name of the file to be saved
  $hash         -> hash of the user to use as the path to the save the file
to
*/
function createPDF($html,$thisFileName,$hash)
{

  require_once("includes/dompdf_config.inc.php");

// Turn off all error reporting
//error_reporting(0);

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();

// The next call will store the entire PDF as a string in $pdf

  $pdf = $dompdf->output();

// You can now write $pdf to disk, store it in a database or stream it
// to the client.

//check if IE,since it doesn't like the stream, so we save it to disk and
then stream the saved file
  $browserCheck = browserDetection();

  if ($browserCheck)
  {
  if (!is_dir("../data/$hash"))
  {
    mkdir("../data/$hash");
  } // end is_dir check

      // save the file
      if(!file_put_contents("../data/$hash/$thisFileName", $pdf))
  {
    echo "failed to write new pdf file";
  }
         // output to the browser
  showPDF("../data/$hash/$thisFileName");
  }else{
      $dompdf->stream("$thisFileName");
  }// if user agent
}//end function createPDF

function browserDetection()
{
$UA = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
 $SF = strstr($UA, 'Safari') ? true : false;
 $OP = strstr($UA, 'Opera') ? true : false;
$OPV = $OP ? preg_split('/opera\//i', $UA) : false;
$OPV = $OPV ? floatval($OPV[1]) : false;
 $FF = !$OP && strstr($UA, 'Firefox') ? true : false;
$FFV = $FF ? preg_split('/firefox\//i', $UA) : false;
$FFV = $FFV ? floatval($FFV[1]) : false;
 $IE = !$OP && !$FF && strstr($UA, 'MSIE') ? true : false;
$IEV = $IE ? preg_split('/msie/i', $UA) : false;
$IEV = $IEV ? floatval($IEV[1]) : false;
 if ($IE){
  return true;
}else{
  return false;
}

}//end function broswerDetection


function showPDF($file)
{
$name = basename($file);
     header("Cache-Control: maxage=1"); //In seconds
    header("Pragma: public");
 // We'll be outputting a PDF
header('Content-type: application/pdf');
 // It will be called $name.pdf
header('Content-Disposition: attachment; filename="$name"');
 // The PDF source is in original.pdf
readfile("$file");

}//end function showPDF
?>

-- 

Bastien

Cat, the other other white meat

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux