Принудительное рендеринг PDF-документа в Rails - PullRequest
4 голосов
/ 20 января 2011

Я пишу сервис, который генерирует PDF-файлы из набора XML-файлов. PDF создается правильно. Однако каждый раз, когда я нажимаю на ссылку «Просмотр PDF», браузер просит пользователя загрузить файл PDF.

Мне нужно, чтобы PDF отображался встроенным, как любая обычная HTML-страница. Я хоть и написал правильный код, но что-то должно отсутствовать - браузер постоянно просит пользователя загрузить.

Вот текущий код:

class PdfController < Controller
  def generate
    # stuff
    send_data pdf_bytes, :disposition => 'inline', :type => 'application/pdf'
  end
end

Есть идеи?

1 Ответ

3 голосов
/ 20 января 2011

Попробуйте полностью удалить заголовок Content-Disposition. По моему опыту, Content-Disposition: attachment работает довольно хорошо, но многие браузеры ведут себя некорректно для любого другого значения. Если вы хотите отобразить inline, может быть лучше удалить заголовок и надеяться на лучшее. У IE, похоже, больше всего проблем с этим заголовком. (Сюрприз, сюрприз.) Просто убедитесь, что вы все еще настраиваете Content-Type: application/pdf.

Другим вариантом будет использование iframe и установка src из iframe для вашего PDF-файла. Почти все браузеры, поддерживающие встроенный просмотр PDF, справятся с этим правильно. Недостатком является то, что вы могли бы в конечном итоге отобразить пустой iframe, тогда как неподдерживаемые браузеры в противном случае сделали бы изящный запасной вариант простой загрузки PDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...