класс ActiveStorage::Preview
Некоторые не-изображения могут быть представлены в виде предварительного просмотра: то есть, они могут быть представлены как изображения. Предварительный просмотр видео-объекта может быть получен путем извлечения первого кадра, а предварительный просмотр PDF-объекта — путем извлечения первой страницы.
Предварительный просмотр извлекает предварительное изображение из объекта. Active Storage предоставляет предварительные просмотры для видео и PDF-файлов. ActiveStorage::Previewer::VideoPreviewer используется для видео, а ActiveStorage::Previewer::PopplerPDFPreviewer и ActiveStorage::Previewer::MuPDFPreviewer используются для PDF-файлов. Настройте пользовательские предварительные просмотры, наследуя от ActiveStorage::Previewer и реализуйте необходимые методы. Обратитесь к документации ActiveStorage::Previewer для получения более подробной информации о требованиях к предварительным просмотрам.
Для выбора предварительного просмотра для объекта Active Storage вызывает accept? для каждого зарегистрированного предварительного просмотра по порядку. Он использует первый предварительный просмотр, для которого accept? возвращает true, когда получает объект. В приложении Rails добавьте или удалите предварительные просмотры, изменяя Rails.application.config.active_storage.previewers в файле инициализации:
Rails.application.config.active_storage.previewers # => [ ActiveStorage::Previewer::PopplerPDFPreviewer, ActiveStorage::Previewer::MuPDFPreviewer, ActiveStorage::Previewer::VideoPreviewer ] # Add a custom previewer for Microsoft Office documents: Rails.application.config.active_storage.previewers << DOCXPreviewer # => [ ActiveStorage::Previewer::PopplerPDFPreviewer, ActiveStorage::Previewer::MuPDFPreviewer, 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 36 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 81
def download(&block)
if processed?
variant.download(&block)
else
raise UnprocessedError
end
end # File activestorage/app/models/active_storage/preview.rb, line 52 def image blob.preview_image end
Возвращает прикреплённое предварительное изображение объекта.
# File activestorage/app/models/active_storage/preview.rb, line 73
def key
if processed?
variant.key
else
raise UnprocessedError
end
end Возвращает комбинированный ключ объекта и варианта, вместе идентифицирующий конкретную разновидность.
# File activestorage/app/models/active_storage/preview.rb, line 46 def processed process unless processed? self end
Обрабатывает предварительный просмотр, если он ещё не обработан. Для удобства возвращает текущий экземпляр Preview:
blob.preview(resize_to_limit: [100, 100]).processed.url
Обработка предварительного просмотра генерирует изображение из его объекта и прикрепляет предварительное изображение к объекту. Поскольку предварительное изображение хранится вместе с объектом, оно генерируется только один раз.
# File activestorage/app/models/active_storage/preview.rb, line 61
def url(**options)
if processed?
variant.url(**options)
else
raise UnprocessedError
end
end Возвращает URL варианта предварительного просмотра на сервисе. Вызывает исключение ActiveStorage::Preview::UnprocessedError, если предварительный просмотр ещё не обработан.
Этот метод синхронно обрабатывает вариант предварительного изображения, поэтому не вызывайте его в представлении. Вместо этого, сгенерируйте стабильный URL, который перенаправляет на URL, возвращаемый этим методом.
© 2004–2020 David Heinemeier Hansson
Licensed under the MIT License.