更新:
与此同时,我切换到直接使用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 的第一页,其余的都丢失了。
我确信的一件事是(至少通过 rmagick)对 Magick::Image.read(pdf) 的调用会导致一个包含一个元素的数组,而不管 pdf 有多少页,所以这让我抓狂头..
我一直在用谷歌搜索这个问题,我似乎找不到有类似问题的人,我到处都在说,如果它有多个页面,它应该自动将 pdf 转换为多个图像,除非它没有。
任何想法都会有巨大的帮助,也许我错过了一些明显的东西。