我想获取一个PDF文件并将其转换为图像,每个PDF页面都变成一个单独的图像。
“ Convert a .doc or .pdf to an image and display a thumbnail in Ruby?”是类似的帖子,但没有介绍如何为每一页制作单独的图像。
ImageMagick可以使用PDF做到这一点。大概RMagick也可以,但我不熟悉。
您链接到的帖子中的代码:
require 'RMagick'
pdf = Magick::ImageList.new("doc.pdf")
pdf
是一个ImageList
对象,根据documentation,该对象将其许多方法委托给Array
。您应该能够遍历pdf
并调用write
将单个图像写入文件。
使用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")
由于无法在RMagick中找到处理每页PDF的方法,因此建议您首先使用pdftk's burst
命令将PDF分成几页,然后再处理RMagick中的各个页面。这可能比一站式解决方案的性能要差,但不幸的是,没有任何一站式解决方案能够自我展示。
还有Ruby的PDF::Toolkit也可以插入pdftk,但我从未使用过。