Я загружаю PDF и хочу разделить страницы на отдельные изображения. Моя проблема в том, что обработка происходит до сохранения оригинального pdf, поэтому model.id имеет значение null. Мне нужен model.id, чтобы я мог отслеживать файлы изображений и сохранять их в нужной папке.
class PdfPackageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{model.id}"
end
version :jpg do
process :convert_to_images
process :set_content_type_jpg
end
def convert_to_images(*args)
image = MiniMagick::Image.open(current_path)
image.pages.each_with_index do |page, index|
MiniMagick::Tool::Convert.new do |convert|
convert.background 'white'
convert.flatten
convert.density 200
convert.quality 80
convert << page.path
convert << "#{CarrierWave.root}/#{store_dir}/#{model.id}image-#{index}.jpg"
@sheet = Sheet.create()
@sheet.package_id = model.id
@sheet.save
end
end
end
def set_content_type_jpg(*args)
self.file.instance_variable_set(:@content_type, "image/jpg")
end
def extension_white_list
%w(jpg jpeg gif png doc docx pdf)
end