Вот другой подход. Я предпочитаю вместо того, чтобы полагаться на поддержку браузера или обращаться к ней на уровне приложений, чтобы использовать логику веб-сервера.
Если вы используете Apache и можете поместить файл .htaccess в соответствующий каталог, вы можете использовать приведенный ниже код. Конечно, вы также можете поместить это в httpd.conf, если у вас есть доступ к нему.
<FilesMatch "\.(?i:pdf)$">
Header set Content-Disposition attachment
</FilesMatch>
Директива FilesMatch является просто регулярным выражением, поэтому ее можно установить настолько детально, как вы хотите, или вы можете добавить другие расширения.
Строка Header делает то же самое, что и первая строка в сценариях PHP выше. Если вам нужно также установить строки Content-Type, вы можете сделать это таким же образом, но я не нашел в этом необходимости.