Some non-image blobs can be previewed: that is, they can be presented as images. A video blob can be previewed by extracting its first frame, and a PDF blob can be previewed by extracting its first page.
A previewer extracts a preview image from a blob. Active Storage provides previewers for videos and PDFs: ActiveStorage::Previewer::VideoPreviewer and ActiveStorage::Previewer::PDFPreviewer. Build custom previewers by subclassing ActiveStorage::Previewer and implementing the requisite methods. Consult the ActiveStorage::Previewer documentation for more details on what's required of previewers.
To choose the previewer for a blob, Active Storage calls
accept? on each registered previewer in order. It uses the
first previewer for which
accept? returns true when given the
blob. In a Rails application, add or remove previewers by manipulating
Rails.application.config.active_storage.previewers in an
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 ]
Outside of a Rails application, modify
The built-in previewers rely on third-party system libraries:
These libraries are not provided by Rails. You must install them yourself to use the built-in previewers. Before you install and use third-party software, make sure you understand the licensing implications of doing so.