I've used this trick before but I haven't shared it here. I needed to have it setup so a client was forced to download a PDF file to their computer and not use the Acrobat Reader plugin. The process is very simple:

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="filenamegoeshere.pdf"');

You then output the file contents.

It's simple to do this for other file types to.

XML

header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="filenamegoeshere.xml"');

DOC

header('Content-type: application/msword');
header('Content-Disposition: attachment; filename="filenamegoeshere.doc"');