Rails 5.2 ActiveStorage Разделение PDF-файлов на изображения - PullRequest
0 голосов
/ 29 мая 2018

Ранее я использовал CarrierWave и ImageMagick для разделения PDF-файлов на изображения, используя что-то вроде этого:

def pdf_to_imgs
  manipulate! do |img, index|
    image.format = 'png'
    image.write("path/to/images/image-#{index}.png")
  end
end

В Rails 5.2 ActiveStorage, похоже, является способом загрузки, поэтому я пытаюсь выполнить миграциювсе.

У меня есть следующее, и оно технически работает:

def pdf_to_imgs
  path = Rails.application.routes.url_helpers.rails_blob_url(self.pdf)
  page_count = MiniMagick::Image.open(path).pages.count
  pipeline = ImageProcessing::MiniMagick.source(path).convert("jpg")
  images = page_count.times.map do |page_number|
    pipeline.loader(page: page_number).call
  end
  images.each_with_index do |slide, i|
    self.images.attach(io: File.open(pdf), filename: "pdf-#{i}.jpg", content_type: "image/jpg")
  end
end

Но мне было любопытно, если это лучший способ сделать это, или есть лучший способ?Например, я надеялся передать массив методу присоединения, но получал ошибку.Вышеупомянутый процесс также, кажется, занимает довольно много времени для выполнения (хотя и с большими файлами PDF).

И консоль зависает на "Performed ActiveStorage :: AnalyzeJob", но я предполагаю, что это только потому, что это асинхронное задание.

Заранее спасибо за любую помощь!

...