【问题标题】:How to convert PDF files to images using RMagick and Ruby如何使用 RMagick 和 Ruby 将 PDF 文件转换为图像
【发布时间】:2011-02-27 19:14:22
【问题描述】:

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

Convert a .doc or .pdf to an image and display a thumbnail in Ruby?”是类似的帖子,但没有介绍如何为每个页面制作单独的图像。

【问题讨论】:

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


    【解决方案1】:

    ImageMagick 可以用 PDF 做到这一点。想必RMagick也可以,只是我不熟悉。

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

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

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

    【讨论】:

    • 毫无疑问...我只是想知道是否有人有一些示例代码。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 感谢关于路径索引的提示!效果很好,即使这是一个肮脏的黑客;)
      • 这很好,但我被卡住了很长时间,不知道我还需要“brew install ghostscript”才能让阅读器返回的不仅仅是一个空数组。如果您是 OSX 用户,它可能也不是您的标准。
      • 如果您在 OSX 上安装 RMagick 时遇到问题,请阅读本文以正确安装。 blog.paulopoiati.com/2013/01/28/…
      • 对我不起作用。 im 在我的情况下始终是一个空数组。它依赖于 PDF 吗?
      • 谢谢@MatthewDuPont。在我安装 ghostscript 之前,我得到的是空数组。
      猜你喜欢
      • 1970-01-01
      • 2010-10-25
      • 2020-04-19
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多