Конвертируйте .pdf в изображения, используя RMagick & Ruby - PullRequest
9 голосов
/ 04 июня 2010

Я хотел бы взять PDF и преобразовать его в изображения ... каждая страница PDF становится отдельным изображением.

Здесь есть похожий пост: Конвертировать .doc или .pdf в изображение и показать миниатюру в Ruby? Но это не касается того, как сделать отдельные изображения для каждой страницы.

Ответы [ 3 ]

54 голосов
/ 16 июня 2011

Используя сам RMagick, вы можете создавать изображения для разных страниц.

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

Выше приведен массив arr [], в котором будет одна запись для соответствующих страниц. Если вы хотите сгенерировать изображение (jpg) 5-й страницы, вы можете сделать:

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")
19 голосов
/ 04 июня 2010

ImageMagick может сделать это с PDF-файлами. Предположительно RMagick тоже может это сделать, но я не знаком с этим.

EDIT:

Код сообщения, на которое вы ссылались:

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

pdf - это объект ImageList, который согласно документации делегирует многие из своих методов Array. Вы должны иметь возможность перебирать pdf и вызывать write для записи отдельных изображений в файлы.

2 голосов
/ 04 июня 2010

Поскольку в RMagick я не могу найти способ работы с PDF-файлами отдельно для каждой страницы, я бы рекомендовал сначала разбить PDF-файл на страницы с помощью команды pdftk burst, а затем разобраться с отдельные страницы в RMagick. Это, вероятно, менее эффективно, чем решение «все в одном», но, к сожалению, решение «все в одном» не представляется.

Также есть PDF :: Инструментарий для Ruby, который подключается к pdftk, но я никогда не использовал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...