2

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

这里

但是在通过 rmagick 之后,质量非常糟糕:

这里

这是怎么回事?我根本没有压缩它。这是方法:

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

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

4

1 回答 1

4

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

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

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

于 2013-09-12T07:28:22.497 回答