使用RMagick& amp;将.pdf转换为图像红宝石

时间:2010-06-04 13:12:53

标签: ruby-on-rails ruby pdf imagemagick rmagick

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

这里有类似的帖子:Convert a .doc or .pdf to an image and display a thumbnail in Ruby? 但它没有涵盖如何为每个页面制作单独的图像。

3 个答案:

答案 0 :(得分:54)

使用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")

答案 1 :(得分:19)

ImageMagick可以使用PDF来实现。据推测RMagick也可以做到,但我不熟悉它。

编辑:

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

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

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

答案 2 :(得分:2)

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

Ruby也有PDF::Toolkit挂钩到pdftk,但我从未使用它。