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

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

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

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

编辑:

您链接到的post中的代码:

require 'RMagick' pdf = Magick::ImageList.new("doc.pdf") 

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

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

 require 'RMagick' pdf_file_name = "test.pdf" im = Magick::Image.read(pdf_file_name) 

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

 im[4].write(pdf_file_name + ".jpg") 

但这会加载完整的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") 

由于我无法在RMagick中找到基于每页处理PDF的方法,因此我建议首先使用pdftk的 burst命令将PDF拆分为页面,然后处理RMagick中的各个页面。 这可能不如一体化解决方案高效,但不幸的是没有一体化解决方案。

还有PDF :: Toolkit for Ruby挂钩到pdftk但我从未使用过它。