класс ActiveStorage::Preview
Некоторые неизображения могут быть предварительно просмотрены: то есть они могут быть представлены как изображения. Файл видео можно предварительно просмотреть, извлекая из него первый кадр, а файл PDF — извлекая первую страницу.
Предварительный просмотрщик извлекает предварительный образ из файла. Active Storage предоставляет просмотрщики для видео и PDF: ActiveStorage::Previewer::VideoPreviewer и ActiveStorage::Previewer::PDFPreviewer. Создайте собственные просмотрщики, унаследовав от ActiveStorage::Previewer и реализовав необходимые методы. Обратитесь к документации ActiveStorage::Previewer для получения более подробной информации о требованиях к просмотрщикам.
Для выбора просмотрщика для файла Active Storage вызывает accept? для каждого зарегистрированного просмотрщика в порядке. Он использует первый просмотрщик, для которого accept? возвращает true при передаче файла. В приложении Rails добавьте или удалите просмотрщики, изменив Rails.application.config.active_storage.previewers в файле инициализации:
Rails.application.config.active_storage.previewers # => [ ActiveStorage::Previewer::PDFPreviewer, ActiveStorage::Previewer::VideoPreviewer ] # Add a custom previewer for Microsoft Office documents: Rails.application.config.active_storage.previewers << DOCXPreviewer # => [ ActiveStorage::Previewer::PDFPreviewer, ActiveStorage::Previewer::VideoPreviewer, DOCXPreviewer ]
Вне приложения Rails измените ActiveStorage.previewers вместо этого.
Встроенные просмотрщики полагаются на сторонние библиотеки системы. В частности, встроенный просмотрщик видео требует ffmpeg. Предоставляются два просмотрщика PDF: один требует Poppler, а другой — mupdf (версия 1.8 или новее). Для предварительного просмотра PDF установите либо Poppler, либо mupdf.
Эти библиотеки не предоставляются Rails. Вы должны установить их самостоятельно, чтобы использовать встроенные просмотрщики. Перед установкой и использованием стороннего программного обеспечения убедитесь, что вы понимаете последствия лицензирования.
Атрибуты
Публичные методы класса
# File activestorage/app/models/active_storage/preview.rb, line 35 def initialize(blob, variation_or_variation_key) @blob, @variation = blob, ActiveStorage::Variation.wrap(variation_or_variation_key) end
Публичные методы экземпляра
# File activestorage/app/models/active_storage/preview.rb, line 51 def image blob.preview_image end
Возвращает присоединенное к файлу изображение предварительного просмотра.
# File activestorage/app/models/active_storage/preview.rb, line 45 def processed process unless processed? self end
Обрабатывает предварительный просмотр, если он еще не обработан. Для удобства возвращает экземпляр Preview получателя:
blob.preview(resize: "100x100").processed.service_url
Обработка предварительного просмотра генерирует изображение из его файла и присоединяет изображение предварительного просмотра к файлу. Поскольку изображение предварительного просмотра хранится с файлом, оно генерируется только один раз.
# File activestorage/app/models/active_storage/preview.rb, line 60
def service_url(**options)
if processed?
variant.service_url(options)
else
raise UnprocessedError
end
end Возвращает URL варианта предварительного просмотра на сервере. Вызывает ActiveStorage::Preview::UnprocessedError, если предварительный просмотр еще не обработан.
Этот метод синхронно обрабатывает вариант изображения предварительного просмотра, поэтому не вызывайте его в представлениях. Вместо этого сгенерируйте стабильный URL, который перенаправляет на кратковременный URL, возвращаемый этим методом.
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.