Solved

Force a pdf file to download instead of opening.

Posted on 2004-07-31
11
9,523 Views
Last Modified: 2013-11-19
Have a special case instance where I would like a visitor to be able to download a pdf form without the pdf file first opening in a new window.

What I have working:
straight html page (frames).
a link to name.pdf.
Using MS Frontpage

My only options for the pdf hyperlink were to have it open in the same page, specific frame, or new window.
And what seems to be a real puzzle is that I have security set on the pdf document to allow the filling in of form data, printing and saving, but nothing else.
If the user opens up the pdf in a new window and fills in any information on the form, it is saved to the pdf regardless of being on the web server???  the next user can open up the pdf and any information previously filled in, is right there still visible.

So, for my purposes with this pdf form, I need to force download instead of opening as a web page.

TIA,

kkohl
0
Comment
Question by:kkohl
11 Comments
 
LVL 36

Expert Comment

by:Zyloch
ID: 11684943
It's in how you send the headers. Check this page http://us4.php.net/manual/en/function.header.php and search for Content-Disposition for a PHP example.

The only other way to do this without a server-side scripting language is to zip up the pdf file.

Regards,
${Zyloch}
0
 
LVL 53

Expert Comment

by:COBOLdinosaur
ID: 11685316
Download a file instead of opening it. IE only and assuming you have ASP capabilities:
<%@Language="JScript"%>
<%
var myFSO = new ActiveXObject("Scripting.FileSystemObject")
var objFile = myFSO.openTextFile(Server.MapPath("/path/somefile.pdf"));
var str = new String(objFile.readAll());
Response.ContentType = 'application/unknown';
Response.addHeader('content-disposition', 'attachment;filename=somefile.pdf');
Response.Write(str);
%>

Cd&
0
 
LVL 14

Expert Comment

by:Esopo
ID: 11685822
I've come to the conclution that the best method is to just ask the users to right click the link and choose "save as". Of course that's not what you are looking for so I will suggest you use CobolDinosaur's method, or it's equivalent in any other server side scripting language like PHP, .NET, even Perl.

I don't think this can be done on the client side, check this link to see what I mean (and for code on how to do it in every server side language):
http://www.experts-exchange.com/Web/Web_Languages/HTML/Q_21073694.html

Best regards,

Esopo.
0
 
LVL 36

Accepted Solution

by:
Zyloch earned 90 total points
ID: 11686183
It's not possible to do it completely client-side since downloading the pdf or displaying it is specific to each browser. You can do it server side using Cd's example or sending different page headers.

Regards,
${Zyloch}
0
 
LVL 9

Expert Comment

by:stefanaichholzer
ID: 11686795
Why don't you just put the .pdf file into a .zip file?, .zip files can't be opened by the browser, so each time the user wants to download one he'll have to save it to the drive, no matter what...

Hope that works for you...

;)
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 8

Expert Comment

by:Ahmed Merghani
ID: 11692362
I've come to the conclution that the best method is to just ask the users to right click the link and choose "save as". Of course that's not what you are looking for so I will suggest you use CobolDinosaur's method, or it's equivalent in any other server side scripting language like PHP, .NET, even Perl.

I don't think this can be done on the client side, check this link to see what I mean (and for code on how to do it in every server side language):
0
 
LVL 3

Author Comment

by:kkohl
ID: 11695301
It's all in the headers, as Zyloch pointed out.  I did find a little clearer answer when digging a little deeper on the web.

I changed the file extension from .pdf to .fdf, and added the headers to account for the downloading of my file.

<meta http-equiv="Content-Type" content="application/vnd.fdf; name="%s.FDF"">
<meta http-equiv="Content-Disposition" content="attachment; filename="%s.FDF"">

The user can still choose to open the file from the current location but it is not automatic and the default button that is focused is the save button.  Also, it was verified that if the user opens the file from the site location, any form changes are not saved to that web location regardless if the user tries to or not.

This method answered all requirements.
0
 
LVL 3

Author Comment

by:kkohl
ID: 11695375
(yes, this method was the fix for IE, there are other headers for the different browsers)
Very clunky way if you ask me, but it was done in straight HTML, no asp or xml, no java, no perl...  and the bottom line is, it works.

Thanks all!

0
 
LVL 1

Expert Comment

by:milkmon123
ID: 11942201
Hi There,

Here is what I would use...

<?php

header('Content-Type: application/save');
header('Content-Disposition: attachment; filename=<<<FILE NAME>>');
readfile(<<< ABSOLUTE PATH TO YOUR FILE >>>);

?>

Hope it helps

Matt Wilkes
0
 

Expert Comment

by:debjitk
ID: 11946381
Matt Wilkes is right you can force to download a file without displaying but adding specific headers.

Debjit Kar
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Introduction HTML checkboxes provide the perfect way for a web developer to receive client input when the client's options might be none, one or many.  But the PHP code for processing the checkboxes can be confusing at first.  What if a checkbox is…
Read about why website design really matters in today's demanding market.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
Any person in technology especially those working for big companies should at least know about the basics of web accessibility. Believe it or not there are even laws in place that require businesses to provide such means for the disabled and aging p…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now