8

我想获取一个 PDF 文件并将其转换为图像,每个 PDF 页面都成为一个单独的图像。

将 .doc 或 .pdf 转换为图像并在 Ruby 中显示缩略图? ”是一篇类似的帖子,但它没有介绍如何为每个页面制作单独的图像。

4

3 回答 3

57

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

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

上面的代码将为您提供一个数组arr[],其中将有一个对应页面的条目。如果要生成第五页的 JPEG 图像,请执行此操作:

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

但这会加载整个 PDF,因此速度可能会很慢。

或者,如果您想创建第五页的图像并且不想加载完整的 PDF 文件:

require 'RMagick'
pdf_file_name = "test.pdf[5]"
im = Magick::Image.read(pdf_file_name)
im[0].write(pdf_file_name + ".jpg")
于 2011-06-16T09:13:30.230 回答
21

ImageMagick可以用 PDF 做到这一点。大概RMagick也可以做到,但我不熟悉它。

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

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

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

于 2010-06-04T13:21:03.413 回答
2

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

还有用于 Ruby 的PDF::Toolkit与 pdftk 挂钩,但我从未使用过它。

于 2010-06-04T13:37:34.110 回答