Las mismas que para otro cualquiera ..
Por ejemplo (extraido del manual oficial de PHP):
Código PHP:
<?php
// We'll be outputting a PDF
header("Content-type: application/pdf");
// It will be called downloaded.pdf
// Esta es la cabecera HTTP que indica que el archivo es para descargar: No todo los navegadores se comportan igual ante esta cabecera.
header("Content-Disposition: attachment; filename=downloaded.pdf");
// The PDF source is in original.pdf
readfile('original.pdf');
?>
El caso es que con las cabeceras HTTP adecuadas le dices a tu navegador que el "dato" que envias es para descargar .. Para eso con ese tipo de cabeceras "fuerzas" el tipo de archivo o le indicas directamente al "cliente" que lo que se le va a enviar a continuación es para que lo descarge.
Un saludo,