module Thumbnail module Strategies class PdfThumbnailGenerator < ::Thumbnail::GeneratableStrategy def generate(media) pdf = first_page(media.path) hash = SecureRandom.hex(10) output = "/tmp/#{hash}.png" pdf.write(output) File.open output end def can_generate?(media) super { 'pdf' } end private def first_page(pdf_path) first_page_path = pdf_path + "[0]" Magick::Image.read(first_page_path).first end end end end