класс 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 83
def download(&block)
if processed?
variant.download(&block)
else
raise UnprocessedError
end
end Загружает файл, связанный с вариантом этого предварительного просмотра. Если блок не задан, весь файл читается в память и возвращается. Это потребует много оперативной памяти для очень больших файлов. Если блок задан, загрузка передаётся потоками и сгенерирует куски. Вызывает ActiveStorage::Preview::UnprocessedError, если предварительный просмотр ещё не обработан.
# 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 70
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–2021 David Heinemeier Hansson
Licensed under the MIT License.