アップデート:
その間、ghostscript を直接利用する 'rghost' gem に切り替えましたが、複数のページを持つ pdf で非常にうまく機能しているようです。
誰かが以下の問題に対する答えを見つけた場合に備えて、この質問を開いたままにします。
これが私の問題です:
Carrierwave と rmagick を使用して PDF を画像に変換していますが、問題なく動作します。唯一の問題は、2..n ページの pdf を解析しようとすると、常に最初のページの画像が生成され、他には何も生成されないことです。
私がこれを処理している方法の2つの例を次に示します。
rmagick を介して:
def do_parsing pdf_path = "#{Rails.root}/public#{@pdf.pdf.url}" raw_pages_arr = Magick::Image.read(pdf_path) { self.density = 400 } save_pdf_images(raw_pages_arr) end def save_pdf_images(raw_pages_arr) raw_pages_arr.each do |raw_page| page_number = raw_pages_arr.index(raw_page) + 1 image_name = "#{@pdf.form.name}_page_#{page_number}.jpg" raw_page.write(image_name) image = File.new("#{Rails.root}/#{image_name}") build_pdf_image(image, page_number) end end
画像マジックを直接使用する
file = Form::Pdf.first.pdf file_name = file.path.sub('.pdf', '.jpg') system("convert -quality 100 -density '400' #{file.path} #{file_name}")
どちらの状況でも jpg が作成されますが、pdf の最初のページのみが作成され、残りは欠落しています。
私が確信していることの 1 つは、(少なくとも rmagick を使用して) Magick::Image.read(pdf) を呼び出すと、pdf のページ数に関係なく 1 つの要素を持つ配列になることです。頭..
私はこの問題を何度もグーグルで検索してきましたが、同様の問題を抱えている人を見つけることができないようです.
任意のアイデアは非常に役立ちます。おそらく、明らかな何かが欠けている可能性があります。