使用RMagick和Ruby将.pdf转换为图像

tyb*_*103 9 ruby pdf ruby-on-rails rmagick imagemagick

我想拍一个pdf并将其转换成图像......每个pdf页面都成为一个单独的图像.

这里有类似的帖子:将.doc或.pdf转换为图像并在Ruby中显示缩略图? 但它没有涵盖如何为每个页面制作单独的图像.

Aka*_*wal 55

使用RMagick本身,您可以为不同的页面创建图像.

require 'RMagick'
pdf_file_name = "test.pdf"
im = Magick::Image.read(pdf_file_name)
Run Code Online (Sandbox Code Playgroud)

上面会给你一个数组arr [],它将有一个相应页面的条目.如果你想生成第5页的图像(jpg),你可以这样做:

im[4].write(pdf_file_name + ".jpg")
Run Code Online (Sandbox Code Playgroud)

但是这会加载完整的pdf,所以很慢.

或者,如果要创建第5页的图像并且不想加载完整的PDF文件,请执行以下操作:

require 'RMagick'
pdf_file_name = "test.pdf[5]"
im = Magick::Image.read(pdf_file_name)
im[0].write(pdf_file_name + ".jpg")
Run Code Online (Sandbox Code Playgroud)

  • 这很棒,但是我很长时间不知道我需要"brew install ghostscript"以及让读者返回的不仅仅是一个空阵列.如果您是OSX用户,它可能也不适合您. (4认同)
  • 哦,我可以给你不止一票:) (3认同)
  • 感谢路径上的索引提示!工作得很好,即使这是一个肮脏的黑客;) (2认同)

Edw*_*ale 19

ImageMagick可以用PDF来做到这一点.据推测,RMagick也可以做到这一点,但我并不熟悉它.

编辑:

您链接到的帖子中的代码:

require 'RMagick'
pdf = Magick::ImageList.new("doc.pdf")
Run Code Online (Sandbox Code Playgroud)

pdf是一个ImageList对象,根据文档委托其许多方法Array.您应该能够迭代pdf并调用write将单个图像写入文件.