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 に答える