使用RMagick将PDF文件转换为PNG并保持高质量的最佳方法是什么?

时间:2018-10-26 05:03:56

标签: ruby-on-rails ruby imagemagick rmagick


在我的Rails应用中,我想使用Rmagick gam将PDF转换为PNG。
我发现这些行可以解决问题:

require 'RMagick'
pdf = Magick::ImageList.new("file_name.pdf")
pdf.each_with_index do |page_img, i|
   page_img.write("#{i}.png")
end

但是输出的PNG文件质量不是很好(源是好的),有什么方法可以改善它吗?

2 个答案:

答案 0 :(得分:3)

PDF通常是矢量图形文件。要将其读取为光栅图像,需要指定分辨率/浓度。通常使用的密度是72,有点低(对于Web缩略图,可能还可以)。如果您将ImageList行更改为

pdf = Magick::ImageList.new("file_name.pdf") {self.density="300"}

这似乎可行。

答案 1 :(得分:0)

您可以将一个块传递到设置质量属性的new method。 (这为Image::Info设置了属性)

require 'RMagick'
pdf = Magick::ImageList.new("file_name.pdf") do
        # Adjust quality (default 75)     
        self.quality = 100
      end
pdf.each_with_index do |page_img, i|
  page_img.write("#{i}.png")
end