класс ActiveStorage::Preview
Предварительный просмотр Active Storage
Некоторые объекты blob, не являющиеся изображениями, могут быть просмотрены предварительно: то есть они могут быть представлены как изображения. Объект blob видео может быть просмотрен предварительно путём извлечения его первого кадра, а объект blob PDF может быть просмотрен предварительно путём извлечения его первой страницы.
Предварительный просмотрщик извлекает изображение предварительного просмотра из объекта blob. Active Storage предоставляет предварительные просмотрщики для видео и PDF. ActiveStorage::Previewer::VideoPreviewer используется для видео, а ActiveStorage::Previewer::PopplerPDFPreviewer и ActiveStorage::Previewer::MuPDFPreviewer используются для PDF. Настройте собственные предварительные просмотрщики, наследуя ActiveStorage::Previewer и реализовав необходимые методы. Обратитесь к документации ActiveStorage::Previewer для получения дополнительных сведений о том, что требуется от предварительных просмотрщиков.
Для выбора предварительного просмотрщика для объекта blob Active Storage вызывает accept? для каждого зарегистрированного предварительного просмотрщика в порядке. Он использует первый предварительный просмотрщик, для которого accept? возвращает true, когда ему передаётся объект blob. В приложении 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 42 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 90
def download(&block)
if processed?
presentation.download(&block)
else
raise UnprocessedError
end
end Загружает файл, связанный с вариантом этого предварительного просмотра. Если блок не указан, весь файл считывается в память и возвращается. Это потребует много оперативной памяти для очень больших файлов. Если указан блок, загрузка осуществляется потоково и значения передаются частями. Возникает исключение ActiveStorage::Preview::UnprocessedError, если предварительный просмотр ещё не обработан.
# File activestorage/app/models/active_storage/preview.rb, line 59 def image blob.preview_image end
Возвращает прикреплённое к объекту blob изображение предварительного просмотра.
# File activestorage/app/models/active_storage/preview.rb, line 77
def key
if processed?
presentation.key
else
raise UnprocessedError
end
end Возвращает комбинированный ключ объекта blob и варианта, вместе определяющих определённый вариант.
# File activestorage/app/models/active_storage/preview.rb, line 52 def processed process unless processed? variant.processed if variant? self end
Обрабатывает предварительный просмотр, если он ещё не обработан. Возвращает экземпляр получающего ActiveStorage::Preview объекта для удобства:
blob.preview(resize_to_limit: [100, 100]).processed.url
Обработка предварительного просмотра создаёт изображение из объекта blob и прикрепляет изображение предварительного просмотра к объекту blob. Поскольку изображение предварительного просмотра хранится вместе с объектом blob, оно генерируется только один раз.
# File activestorage/app/models/active_storage/preview.rb, line 68
def url(**options)
if processed?
presentation.url(**options)
else
raise UnprocessedError
end
end Возвращает URL-адрес варианта предварительного просмотра на сервисе. Возникает исключение ActiveStorage::Preview::UnprocessedError, если предварительный просмотр ещё не обработан.
Этот метод синхронно обрабатывает вариант изображения предварительного просмотра, поэтому не вызывайте его в представлениях. Вместо этого сгенерируйте стабильный URL-адрес, который перенаправляет на URL-адрес, возвращаемый этим методом.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.