in reply to Download PDF

You must use the proper http header to inform that the browser should download the file. It's usefull to read the protocol RFC that will contain the information you need, namely:

BEGIN Quote:

Content-Disposition

The Content-Disposition response-header field has been proposed as a means for the origin server to suggest a default filename if the user requests that the content is saved to a file. This usage is derived from the definition of Content-Disposition in RFC 1806 35.

        content-disposition = "Content-Disposition" ":"
                              disposition-type *( ";" disposition-parm )
        disposition-type = "attachment" | disp-extension-token
        disposition-parm = filename-parm | disp-extension-parm
        filename-parm = "filename" "=" quoted-string
        disp-extension-token = token
        disp-extension-parm = token "=" ( token | quoted-string )

An example is

        Content-Disposition: attachment; filename="fname.ext"

The receiving user agent SHOULD NOT respect any directory path information present in the filename-parm parameter, which is the only parameter believed to apply to HTTP implementations at this time. The filename SHOULD be treated as a terminal component only.

If this header is used in a response with the application/octet- stream content-type, the implied suggestion is that the user agent should not display the response, but directly enter a `save response as...' dialog.

daniel

Replies are listed 'Best First'.
Re^2: Download PDF
by BaldPenguin (Friar) on Jun 18, 2005 at 15:57 UTC
    I have used this a lot with excel and pdf files:
    mod_perl example:
    $r->content_type('application/pdf'); $r->headers_out->{'Content-Disposition'} = 'attachment; filename=adobe +.pdf'; $r->send_http_header;
    Works every time!

    Don
    WHITEPAGES.COM | INC

    Edit by castaway: Closed small tag in signature

      I think that you might be on to something, but I'm not sure that I'm sure how to implement this into my script. I tried to add it to my script, but now I get a Software Error:

      Can't call method "content_type" on an undefined value at /vhdocs/rollersports/cgi-bin/dlc/ShotGun.cgi

      Any idea what would cause this error?

        THe example above was mod_perl, you probably got that error because 1) you are not using mod_perl or 2) you are calling your Apache object something other than $r. In the case of #1, a CGI.pm example follows:
        use CGI qw(:standard); print header( 'type' => 'application/pdf', 'attachment' => 'adobe.pdf' );

        Don
        WHITEPAGES.COM | INC

        Edit by castaway: Closed small tag in signature