为什么我的RM的RMagick渲染看起来很糟糕?

时间:2013-09-12 06:06:51

标签: ruby-on-rails ruby ruby-on-rails-3 rmagick

在通过rmagick之前,PDF中的一切看起来都很好:

here

但是在经历了rmagick后,质量非常糟糕:

here

发生了什么事?我根本没有压缩它。这是方法:

def create_pdf_image
  @document = Document.find(params[:document_id])
  ruler = 400
  pdf = Prawn::Document.new(:page_size => [ruler, ruler], :margin => 0, :optimize_objects => true)
  @document.post_pdf(pdf, ruler)
  temp = "#{@document.user.name.downcase.parameterize.underscore}-#{@document.id}"
  pdf.render_file("#{::Rails.root}/public/#{temp}.pdf")
  image = Magick::ImageList.new("#{::Rails.root}/public/#{temp}.pdf")
  image.strip!
  image.write("#{::Rails.root}/public/#{temp}.jpg") { self.quality = 100 }
  send_file("#{::Rails.root}/public/#{temp}.jpg")
end

任何帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:4)

您的输入文件是PDF(矢量文件),ImageMagick必须将其转换为位图。默认情况下,输入文件的像素密度设置为72x72(水平x垂直)。您可以覆盖它,但仅限于创建ImageList时:

path = "#{::Rails.root}/public/#{temp}.pdf"
image = Magick::ImageList.new(path) { self.density = 300 }

那应该将输入文件的密度设置为300ppi,这应该足够了。