0

この方法の何が問題になっていますか? 私は完全に困惑しています。私はimg.write(res)行にこのエラーを取得し続けます:

ArgumentImage no images in this image list

コントローラーメソッドは次のとおりです。

def convert_to_image
  @document = Document.find(params[:document_id])
  img = Magick::ImageList.new
  pdf = Prawn::Document.generate("tmp.pdf", :margin => 0, :page_size => [398, 398]) do |p|
    res = @document.post_pdf(p)
    img.write(res)
    send_data img
  end
end

上記のpost_pdf方法は次のようになります。

def post_pdf(p)
  size = 398
  p.image self.user.logo.path, :width => size
  p.bounding_box([30, 490], :width => size) do
    p.fill_color self.user.colour1
    p.pad_bottom(10) { p.text self.title, :size => 28, :style => :bold }
    p.fill_color '#444444'
  end
  self.components.each do |component|
    p.image component.image_newsletter.path, :width => size
    p.fill_color self.user.colour1
    p.fill_rectangle([0, 20], size, 20)
  end
end
4

1 に答える 1

0

解決しました。必要なもの:

1.) ゴーストスクリプト。

2.) 書き直されたメソッド:

def create_pdf_image
  @document = Document.find(params[:document_id])
  pdf = Prawn::Document.new
  temp = "#{@document.user.name.downcase.parameterize.underscore}-#{@document.id}"
  @document.post_pdf(pdf)
  pdf.render_file("#{temp}.pdf")
  image = Magick::ImageList.new("#{temp}.pdf")
  image.write("#{temp}.png") { self.quality = 100 }
  send_file "#{temp}.png"
end

誰かを助けるかもしれません。どうやら rmagick には Ghostscript が必要なようです。メソッドは変更されていませんが、私のメソッドも再生されていませpost_pdfんでした。

于 2013-09-12T03:25:38.283 に答える