アイデアは、PDFをページごとに画像に変換したいということです。Stackoverflow にある他の方法を試しましたが、役に立ちませんでした。以下は私のアップローダーファイルです。
アップローダー
class PdfUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
#//TODO - Remove converted images when deleting an entry, maybe? if needed?
storage :file
#//TODO - Add images into the same folder. model.id can't be accessed in a custom process.
def store_dir
"#{Rails.root}/public/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def cache_dir
"#{Rails.root}/public/uploads/#{model.class.to_s.underscore}/#{mounted_as}/tmp"
end
def extension_white_list
%w(pdf)
end
def filename
super.chomp(File.extname(super)) + '.png'
end
version :pages do
process :create_pages
process convert: 'png'
end
process convert: 'png'
version :thumb do
process :cover
process :resize_to_fill => [200, 200, Magick::CenterGravity]
process convert: 'png'
end
def cover
manipulate! do |frame, index|
frame if index.zero?
end
end
def create_pages
manipulate! do |frame, index|
frame.write("#{store_dir}/#{index}.png")
end
end
end
PDF は各ページの画像に変換されます。ただし、model.id は認識されず、そのフォルダーに保存されません。代わりに、その上のディレクトリに保存されます。強制的にフォルダを作成するために以下を追加してみましたが、少しテストしてもmodel.idがわからないようですか?
ディレクトリを作成しようとしました
def create_pages
Dir.mkdir(store_dir) unless File.exists?(store_dir)
manipulate! do |frame, index|
frame.write("#{store_dir}/#{index}.png")
end
end
助けていただければ幸いです。私はしばらくこれに固執しており、欲求不満から数日間放置しなければなりませんでした。前もって感謝します。