代码之家  ›  专栏  ›  技术社区  ›  tybro0103

使用rmagick&ruby将.pdf转换为图像

  •  9
  • tybro0103  · 技术社区  · 15 年前

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

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

    3 回复  |  直到 14 年前
        1
  •  19
  •   Edward Dale    15 年前

    ImageMagick 可以用pdfs来实现。想必 RMagick 也可以,但我不熟悉。

    编辑:

    链接到的帖子中的代码:

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

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

        2
  •  54
  •   Akash Agrawal    14 年前

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

    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")
    
        3
  •  2
  •   Jordan Running    15 年前

    由于我在rmagick中找不到处理每页PDF的方法,因此我建议首先将PDF拆分为 pdftk's burst 命令,然后处理rmagic中的各个页面。这可能比一个一体式解决方案的性能要差,但不幸的是,没有一个一体式解决方案出现。

    还有 PDF::Toolkit 因为我从来没有用过它。