Prashant Prashant - 6 days ago 9
PHP Question

How to make PDF file downloadable in HTML link?

I am giving link of a pdf file on my web page for download, like below

<a href="myfile.pdf">Download Brochure</a>


The problem is when user clicks on this link then


  • If the user have installed Adobe Acrobat, then it opens the file in the same browser window in Adobe Reader.

  • If the Adobe Acrobat is not installed then it pop-up to the user for Downloading the file.



But I want it always pop-up to the user for download, irrespective of "Adobe acrobat" is installed or not.

Please tell me how i can do this?

Answer

Instead of linking to the .PDF file, instead do something like

<a href="pdf_server.php?file=pdffilename">Download my eBook</a>

which outputs a custom header, opens the PDF (binary safe) and prints the data to the user's browser, then they can choose to save the PDF despite their browser settings. The pdf_server.php should look like this:

header("Content-Type: application/octet-stream");

$file = $_GET["file"] .".pdf";
header("Content-Disposition: attachment; filename=" . urlencode($file));   
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");            
header("Content-Length: " . filesize($file));
flush(); // this doesn't really matter.
$fp = fopen($file, "r");
while (!feof($fp))
{
    echo fread($fp, 65536);
    flush(); // this is essential for large downloads
} 
fclose($fp); 

PS: and obviously run some sanity checks on the "file" variable to prevent people from stealing your files such as don't accept file extensions, add .pdf to the value

Comments