アップロードされたPDFを画像に変換しています。 MiniMagick::Tool::Convert
を使用して画像を生成する方法を考えましたが、画像URLの配列にアクセスできるように、アップローダのブロックversion
を書き込む方法がわかりません。CarrierwaveとMiniMagick(Ruby on Rails)を使ってPDFを画像の配列に変換する方法
はここで、これまでの私のアップローダーです:
class DocumentUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
# storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :jpg do
process :convert_to_images
process :set_content_type_jpg
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 300
convert.quality 95
convert << page.path
convert << "#{CarrierWave.root}/#{store_dir}/image-#{index}.jpg"
end
end
end
end
def set_content_type_jpg(*args)
self.file.instance_variable_set(:@content_type, "image/jpg")
end
# Add a white list of extensions which are allowed to be uploaded.
def extension_white_list
%w(jpg jpeg gif png doc docx pdf)
end
end
これは正しいディレクトリにimage-0.jpg
、image-1.jpg
などを生成します。しかし、今私は自分の見解でそれらの画像を参照する方法、またはそこにいくつがあるか知る方法がありません。これはS3に画像をアップロードする必要があるときにも機能しません。 Carrierwaveに、単一のイメージではなく、このイメージコレクションのファイルストレージを処理させるにはどうすればよいですか?
また、ページ数を格納するために新しいデータベース列を追加する必要があるようです。アップローダーにこの数に基づいて一連の画像URLを返す方法はありますか?
私はまた別の宝石に切り替えるつもりです。これは、Paperclip、Shrine、Refileで簡単にできるものでしょうか?あなたは、各ページに異なるバージョンにすることができ神社で