Ruby PDF To Image

liker · 2014年01月06日 · 最后由 small_fish__ 回复于 2014年01月26日 · 3693 次阅读

pdf 文件转换成 jpg 文件,有没有相关的教程或文章。

https://github.com/jonmagic/grim speakerdeck 用的 反正都是 ghostscript 包一层

#1 楼 @krazy 与之相比较 rmagick http://stackoverflow.com/questions/65250/convert-a-doc-or-pdf-to-an-image-and-display-a-thumbnail-in-ruby 哪个比较好啊?比如图片清晰度、效率等等。。

#3 楼 @krazy 用 grim 怎么生成 jpg 文件啊!生成的 png 文件太大,一页大概 170kb。有没有 api 文档

#5 楼 @krazy

@path = "#{Rails.root}/public/b.png"
pdf = Grim::Pdf.new("#{Rails.root}/public/a.pdf")
Grim::ImageMagickProcessor.new.save(pdf,0,@path,{})

生成 png 文件没问题。当生成 b.jpg 时,生成的文件一团黑。

嗯 jpg 不支持透明 这一行改成 "-quality", quality.to_s, "-alpha", "remove", "-colorspace", "RGB", 试试?

其实直接调命令行一样的

#7 楼 @krazy 还是不行。我用 rmagick 生成的 png 比 jpg 清晰。但是还属 grim 生成的 png 最为清晰。谢谢!

#8 楼 @liker 能不能把网上的 pdf 转化为图片呢,而不是本地。

#7 楼 @krazy 怎么给图片加一个白色的背景色呢?

#10 楼 @liker 不记得了。。你搜一下 imagemagick 的参数?

修改 grim 源代码 image_magick_processor.rb 添加 "-flatten", "-background", "white",

def save(pdf, index, path, options)
      width   = options.fetch(:width,   Grim::WIDTH)
      density = options.fetch(:density, Grim::DENSITY)
      quality = options.fetch(:quality, Grim::QUALITY)
      command = [@imagemagick_path, "-resize", width.to_s, "-antialias", "-render",
                 #"-quality", quality.to_s, "-alpha", "remove", "-colorspace", "RGB",
        "-quality", quality.to_s, "-colorspace", "RGB",
        "-interlace", "none", "-density", density.to_s,
        "-flatten", "-background", "white",
        "#{Shellwords.shellescape(pdf.path)}[#{index}]", path]
      command.unshift("PATH=#{File.dirname(@ghostscript_path)}:#{ENV['PATH']}") if @ghostscript_path

      result = `#{command.join(' ')}`

      $? == 0 || raise(UnprocessablePage, result)
    end

感觉生成的图片有点大。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号