Если вы хотите сохранить файл на сервере, а не загружать его посетителю, вам не понадобятся заголовки.Заголовки предназначены для того, чтобы сообщить клиенту, что вы им отправляете, что в данном случае является ничем (хотя вы, скорее всего, отображаете страницу, ссылающуюся на недавно созданный вами PDF-файл или что-то в этом роде).
Итак, вместо этого просто используйте такую функциюкак file_put_contents
для локального хранения файла, что в конечном итоге позволяет вашему веб-серверу обрабатывать передачу файлов и заголовки HTTP.
// Let's say you have a function `generate_pdf()` which creates the PDF,
// and a variable $pdf_data where the file contents are stored upon creation
$pdf_data = generate_pdf();
// And a path where the file will be created
$path = '/path/to/your/www/root/public_html/newly_created_file.pdf';
// Then just save it like this
file_put_contents( $path, $pdf_data );
// Proceed in whatever way suitable, giving the user feedback if needed
// Eg. providing a download link to http://localhost/newly_created_file.pdf