Using php to force download a pdf
Solution 1
Have you tried getting rid of the closing PHP tag (the ?>) at the end? It will treat the page as a pure PHP page, removing any possible new lines that might accidentally get appended to the end of the output. This helped me when I was dynamically creating excel files for download, and they were downloading as corrupted. Check out this page for more information:
http://www.php.net/manual/en/language.basic-syntax.phptags.php
From your edited question, it seems like PHP is unable to find the file. Try using an absolute path to the file like so: "c:\blah\de\blah\bloo.pdf" or "c:/blah/de/blah/bloo.pdf". If one of those paths works and downloads correctly, your relative path is incorrect in some way.
Solution 2
$file_url = www.example.com/pdffolder/$pdfname;
header('Content-Type: application/pdf');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=".$pdfname);
readfile($file_url);
Solution 3
Try removing the path to the file and just leave the file name in the content:
header('Content-Type: application/pdf');
header('Content-disposition: attachment; filename=ECM_IT_ResumeDownload.pdf');
Craig Traynor
Updated on July 09, 2022Comments
-
Craig Traynor almost 2 years
Im trying to get a website to have a button that forces a download of a pdf.
Heres the html of the button:
<a href=scripts/download.php> <input type="image" src="images/download.gif" alt="Submit button"/> </a>
And the php script so far:
<?php header('Content-Type: application/pdf'); header('Content-disposition: attachment;filename=documents/ECM_IT_ResumeDownload.pdf'); readfile('documents/ECM_IT_ResumeDownload.pdf'); ?>
This seems to download the file fine but when I go to open it i get this error:
"Adobe Reader could not open 'documents_ECM_IT_ResumeDownload.pdf' because it is either not a supported file type or because the file has been damaged (for example, it was sent as an email attachment and wasn't correctly decoded)."
Any help would be greatly appreciated.
EDIT Opened the pdf in a text editor and got this message:
"
Warning: readfile(documents/ECM_IT_ResumeDownload.pdf) [function.readfile]: failed to open stream: No such file or directory in html/scripts/download.php on line 4
"The document is definitely there though. in html/documents/ECM_IT_ResumeDownload.pdf
-
Craig Traynor about 12 yearsThats something I didnt know, i thought you always had to close them But it doesnt solve the problem unfortunately
-
abelito about 12 yearsTry an absolute path in the readfile() call: "c:/html/downloads/ECM_IT_ResumeDownload.pdf" or whatever.
-
abelito about 12 yearsHoora! No problem, have a great night :)
-
undefined over 3 years>
header("Content-disposition: attachment; filename=".$pdfname);
I would also recommend you encode it just in case ...urlencode($pdfname)