Ruby on rails 为什么我不能在Rails中使用RMagick将PDF转换为JPG?

Ruby on rails 为什么我不能在Rails中使用RMagick将PDF转换为JPG?,ruby-on-rails,ruby,pdf,imagemagick,rmagick,Ruby On Rails,Ruby,Pdf,Imagemagick,Rmagick,我正在尝试从Rails中的pdf创建缩略图: def create_thumbnail # pdf = Magick::ImageList.new("#{Rails.root}/app/assets/images/test.pdf") # works pdf = Magick::ImageList.new(invoice_path(invoice, :locale => "en", :format => "pdf")) # does not work pdf.write(

我正在尝试从Rails中的pdf创建缩略图:

def create_thumbnail
  # pdf = Magick::ImageList.new("#{Rails.root}/app/assets/images/test.pdf") # works
  pdf = Magick::ImageList.new(invoice_path(invoice, :locale => "en", :format => "pdf")) # does not work
  pdf.write("#{invoice.number}_thumbnail.jpg")
end
然而,我不断地发现这个错误:

unable to open image `/en/invoices/196.pdf': No such file or directory @ error/blob.c/OpenBlob/2584`
这是我的控制器:

class InvoicesController < ApplicationController

  def show
    disposition = params[:disposition] || "inline"
    respond_to do |format|
      format.html
      format.pdf do |pdf|
        pdf = InvoicePdf.new(@invoice, view_context)
        send_data(pdf.render, :filename => invoice_filename(@invoice), :type => "application/pdf", :disposition => "inline")
      end
    end   
  end
我错过了什么

没有办法从Rails中的内联PDF生成JPEG吗


感谢您的帮助。

问题在于您提供了一个相对URL,它被解释为绝对UNIX文件标识符。您可以尝试将invoice_路径更改为invoice_url,这样您将获得一个绝对url,但我不知道ImageList是否可以从远程源下载。否则,您必须手动下载它,存储在临时位置,并将该路径传递到ImageList。@Lawitchka:我就是这么想的。不过,使用绝对路径并没有什么区别。仍然会出现同样的错误。您的pdf文件是否被缓存,还是每次访问“/en/invoices/196.pdf”时都会生成?如果是,生成pdf需要多长时间?也许RMagick在尝试访问url时超时了?我认为@lawitchka并不是要求一个绝对路径,而是一个绝对URL,这样RMagick就知道它正在访问一个网站,可能需要等待更长的时间才能得到响应。您可以使用Image.read_inline从Base64编码的字符串中获取图像。