У меня есть кнопка формы, которая передает данные в общий сценарий (ту же страницу, с которой загружается форма, index.php), и если в этот сценарий передаются правильные переменные POST, он возвращает PDF для пользователя. печать (с загруженной соответствующей информацией формы, другой информацией о БД и т. д.).
Проблема в том, что независимо от того, какой тип содержимого и расположение содержимого я указал в заголовке, Firefox предлагает пользователю сохранить или открыть документ.
Это не было бы так плохо, если бы Firefox предложил свой собственный плагин Adobe Reader в качестве опции «Открыть с помощью», но он предлагает только реальное приложение Adobe Reader (которое вызывает проблемы из-за аутентификации и настроек браузера по умолчанию, не входящих в мои контроль и т. д.).
Итак, есть ли что-то на стороне сервера, которое мне нужно изменить (либо в файле .htaccess, либо в фактическом заголовке), чтобы Firefox получил сообщение о том, что ответ представляет собой PDF-файл с типом MIME application / pdf и, следовательно, должен обрабатывать файл, как если бы это была жесткая ссылка на PDF, а не поток, генерируемый сервером?
И последнее ...
Если я установлю Content-Disposition на «inline», Firefox откроет файл в Firefox, но только перед загрузкой страницы как «index.php». Как только пользователь попадает в PDF, если он пытается нажать кнопку «Назад», он попадает в index.php, который загрузил PDF, а не в тот, в который он отправил данные. Что касается Mac, Firefox не загружает PDF, а вместо этого предлагает пользователю сохранить или открыть «index.php», как будто это вложение.
Спасибо!
В настоящее время код, который я пробовал (в таком порядке):
Этот файл рассматривается как вложение файла, поэтому правило Mime-Type для Firefox игнорируется для правила расширения файла:
header("Content-Type: application/pdf");
header('Content-Disposition:attachment; filename="testing.pdf"');
Этот работает, но сначала загружает index.php
, а затем загружает файл, который непривлекателен, сбивает с толку и помещает дополнительный запрос (и, следовательно, дополнительную страницу) между pdf и исходной страницей:
header("Content-Type: application/pdf");
header('Content-Disposition:inline; filename="testing.pdf"');
Этот обрабатывается так же, как attachment
(в Firefox) и, таким образом, запрашивает только сохранение или открытие в Adobe Reader, а не по умолчанию для плагина Adobe Reader:
header("Content-Type: application/pdf");
header('Content-Disposition:pdf; filename="testing.pdf"');
Также обратите внимание, что в последнем примере я пробовал и pdf
, и application\pdf
в качестве расположения содержимого. Без разницы.
Единственное, что я еще не пробовал, это установить тип как ocet / stream. Я буду скрещивать пальцы, но не буду задерживать дыхание.