Извлечение встроенных изображений из PDF-файла

До того, как я начал использовать Ubuntu, я использовал Nitro PDF reader для автоматического извлечения изображений из PDF-файлов. Есть ли программа для чтения PDF-файлов для Linux, которая делает это?

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

Воспользуйся pdfimages

pdfimages это инструмент извлечения изображений в формате PDF, который сохраняет изображения в PDF-файле в формате PPM, PBM, JPEG или JPEG 2000.

Это часть poppler-utils пакет, который вам нужно будет установить.

Использование: pdfimages [options] <PDF-file> <image-root>

  • вариант -all будет извлекать изображения в оригинальный формат.
  • вариант -j будет извлекать изображения в формате .jpg (предостережение: изображения преобразуются, и обычно их размер больше, чем у оригинала)

Пример1: Следующее извлекает все изображения из PDF-файла, сохраняя их в исходном формате.

pdfimages -all in.pdf /tmp/out

Пример2: Следующее извлекает все изображения из PDF-файла, сохраняя их в формате JPEG.

pdfimages -j in.pdf /tmp/out

Сохранит изображения из PDF-файла in.pdf в файлах /tmp/out-000.jpg (или /tmp/out-000.pbm; см. ниже), /tmp/out-001.jpg и т.д.


Изображения в формате pdf справочная страница объясняет:

-j:  Normally, all images are written as PBM (for monochrome images) or PPM for     non-monochrome images) files. With this option,  images in DCT format are     saved as JPEG files. All non-DCT images are saved in PBM/PPM format as usual.

Я часто использую Inkscape для этого. Загрузите страницу и удалите все остальное. Преимущество заключается в том, что вы можете получать векторные изображения в формате SVG и изменять их по своему усмотрению.

Обратите внимание, что в этом вопросе конкретно задается вопрос об "Извлечении встроенных изображений из PDF". Ключевое слово - это экстрагирование! Это означает: у меня есть PDF-файл; в нем есть несколько изображений встроенный в него; как мне их вытащить!? Если это ваш вопрос, используйте pdfimages в качестве основной ответ @pl1nk гласит.

Как преобразовать PDF-файл в набор изображений:

Однако многие люди, которые ищут в Google и натыкаются на этот вопрос (включая меня), ищут немного другой вопрос, даже не осознавая разницы до тех пор, пока спустя несколько часов не почувствуют разочарование. Итак, если вы ищете "Как преобразовать PDF в кучу изображений" вместо этого, что НЕ то же самое, что "как извлечь изображения из PDF", вот как: используйте pdftoppm. "ПРОМИЛЛЕ" здесь - это формат изображения, так что это просто означает "PDF to image". Это работает очень хорошо, хотя и медленный для современной многоядерной системы, поскольку это однопоточное приложение и не использует преимущества нескольких ядер вычислительной мощности.

Ubuntu 18.04 поставляется с pdftoppm версия 0.62.0. Проверьте свою версию с помощью pdftoppm -v:

$ pdftoppm -vpdftoppm version 0.62.0Copyright 2005-2017 The Poppler Developers - http://poppler.freedesktop.orgCopyright 1996-2011 Glyph & Cog, LLC

Прочтите страницы руководства с man pdftoppm чтобы увидеть все его многочисленные полезные функции.

Поддерживаемые форматы выходных изображений:

Как показано на справочных страницах, pdftoppm позволяет выводить изображения в следующих форматах:

  1. Промилле (по умолчанию)
  2. PNG (с -png)
  3. JPEG (с -jpeg)
  4. РАЗМОЛВКА (с -tiff)

Он также позволяет указать вывод в монохромном режиме (-mono) или оттенки серого (-gray) (по умолчанию используется цвет), указать номера страниц, поместить выходные изображения в папку, обрезать и изменить размер, указать разрешение, указать качество jpeg (от 0 до 100), указать сжатие TIFF, обрабатывать только страницы с четными или нечетными номерами и т.д. Это работает очень хорошо и это ЧРЕЗВЫЧАЙНО ПОЛЕЗНО!

Вот несколько примеров того, как использовать pdftoppm чтобы преобразовать PDF-файл в набор файлов изображений:

  1. Выводите файлы ppm в виде pg-1.промилле, pg-2.промилле, pg-3.промилле, и т.д., с разрешением по умолчанию 150 точек на дюйм x и y:

    pdftoppm mypdf.pdf pg
  2. То же, что и 1, за исключением размещения всех выходных файлов в папке с именем изображения:

    mkdir -p images && pdftoppm mypdf.pdf images/pg
  3. [Мое любимое] Выводите изображения в папку "изображения" в jpeg формат с 300 Разрешение точек на дюйм x и y вместо 150 точек на дюйм по умолчанию. Обратите внимание, что выходные изображения имеют некоторый уровень сжатия jpeg по умолчанию и будут занимать примерно 0,1 ~ 1 МБ места на файл при разрешении 300 точек на дюйм и при условии стандартных страниц PDF размером 8,5 x 11 дюймов.

    mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg
  4. Выводите изображения в папку "изображения" в jpeg формат с 300 Точек на дюйм с разрешением x и y, на высочайшее качество возможен уровень jpeg! quality значения могут варьироваться от 0 до 100. Смотрите справочные страницы. При качестве, установленном на 100, и разрешении, установленном на 300 точек на дюйм, ожидайте, что каждый файл jpeg будет занимать увеличьте объем хранилища в 2 раза, как указано выше, с размерами в диапазоне от ~ 0,2 ~ 2 МБ, в зависимости от содержимого, и предполагающими страницы формата PDF размером 8,5 x 11 дюймов.

    mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
  5. Вывод несжатый .tif* изображения с **300 Разрешение точек на дюйм x и y. Размер выходного файла составит примерно 25 МБ при разрешении 300 точек на дюйм и 8,5 "x 11" страниц PDF.

    mkdir -p images && pdftoppm -tiff -r 300 mypdf.pdf images/pg

Обратите внимание, что вывод каждой страницы выше с разрешением 300 точек на дюйм занимает 15 ~ 45 секунд на моем медленном компьютере, что означает, что PDF-файл размером 100 страниц может занять до 100 x 45/60 = 75 минут или около того, например, для изображений jpeg с разрешением 300 точек на дюйм.

Чтобы определить, сколько времени занимает процесс на вашем компьютере, просто поместите time команда перед pdftoppm часть любой из приведенных выше команд. Пример: вот результат преобразования PDF-файла, в котором было 3 страницы:

$ mkdir -p images && time pdftoppm -tiff -r 300 testpdf.pdf images/pgreal    1m47.572suser    1m45.675ssys 0m1.536s

Это означает, что общее время реального времени составило 1m47.572s, или 60 + ~ 48 = 108 секунд, что составляет 108/3 = 36 секунд на страницу.

Связанный:

  1. [Как превратить PDF-файл в PDF-файл с возможностью поиска w/pdf2searchablepdf] Как превратить pdf-файл в текстовый pdf-файл с возможностью поиска?
  2. Как превратить pdf-файл в текстовый pdf-файл с возможностью поиска?
  3. Как конвертировать PDF в изображение?
  4. https://stackoverflow.com/questions/6605006/convert-pdf-to-image-with-high-resolution/58795684#58795684
  5. https://www.linuxuprising.com/2019/03/how-to-convert-pdf-to-image-png-jpeg.html
  6. Как программно определить DPI изображений в PDF-файле?

Вы также можете попробовать pdfmod. Это графический интерфейс (графический интерфейс), который может извлекать изображения и выполнять другие базовые манипуляции с PDF.

У меня есть двухколоночный PDF-файл со встроенными изображениями, созданными с помощью LaTeX, где исходные изображения были предоставлены в формате EPS. Я попробовал предложенное решение, основанное на pdfimages, но, к сожалению, он не вернул никаких изображений. Затем я попытался использовать Inkscape, но созданные им SVG-изображения были искажены, и мне также не удалось экспортировать их в формате EPS.

Программное обеспечение, которое работало на нас, было MasterPdfEditor.

Вот процедура

  • Откройте свой файл с помощью главного редактора PDF
  • Используйте инструмент редактирования (Alt +1), чтобы выбрать изображение, которое вам нужно извлечь
  • Скопируйте рисунок (Ctrl+C)
  • Нажмите на окружающую пунктирную рамку вокруг изображения и перейдите на правую боковую панель (Инспектор объектов) и нажмите на "Геомерти". Там вы можете увидеть размер вашего выбора
  • Создайте новый файл (Ctrl+N). Он предложит вам указать размер страницы. Укажите точный размер вашего изображения и создайте новый файл
  • Теперь это немного сложнее: вставьте изображение (Ctrl + V). Изображение может не отображаться в новом файле. Используйте стрелки, чтобы перемещать его до тех пор, пока вы не сможете его отследить.
  • Используйте стрелки, чтобы центрировать изображение на новой странице
  • Сохранить в формате PDF

Результат получается очень качественным, но программное обеспечение не является бесплатным. Существует демо-версия, которая "позволяет вам попробовать все функции", но поставляется с "добавлением водяного знака в выходной файл". Честно говоря, я не заметил никаких водяных знаков в полученном PDF-файле.

Если вам нужно обрезанное изображение в формате pdf / eps, затем извлеките страницу с изображением с помощью pdfmod (как было предложено To Do).

Затем, используя pdfcrop вы можете обрезать его правильно установив поля методом проб и ошибок:

pdfcrop --margins "-15 -50 0 -140" extracted_page.pdf

С помощью pdfimages извлеченное изображение может состоять из двух или более частей. Простой способ собрать их снова, не беспокоясь о извлеченных форматах, - это импортировать детали в LibreOffice Draw, обрезать с помощью диалога обрезки изображения, расположить детали, настроить размер страницы и экспортировать в любой формат, который вы предпочитаете.

Если вы хотите обрезать изображение из pdf-файла с помощью pdfviewer, вы можете попробовать okular. Он может обрезать что угодно (тексты или изображения) в формате png или jpeg. Если вы хотите извлечь изображения в формате png из pdf, вы можете сделать это с помощью минимальной команды с помощью pdftohtml. Он преобразует pdf в html плюс изображения. Здесь вы можете найти пример - https://www.youtube.com/watch?v=CG1rf7k3xo8 . Если вы хотите извлечь много изображений из PDF-файла, я предлагаю вам попробовать это.

Используемое программное обеспечение : XreaderOS : Antergos

Шаги:

  1. Открыть PDF-файл
  2. Щелкните правой кнопкой мыши на изображении
  3. Выберите Сохранить Изображение Как..
  4. Введите имя и расширение файла.
  5. Сохранить.

Я использую pdfimages, который является инструментом командной строки, и он отлично работает для меня. Он очень прост в использовании, и вы можете использовать опцию --help, чтобы узнать больше о его использовании. Я использую Ubuntu, и он поставляется с предустановленной версией. Если ваши PDF-файлы зашифрованы или защищены паролем, для этого есть варианты, так что этот инструмент отлично работает. Вы можете читать больше о pdfизображениях здесь

Возможный дубликат инструмент командной строки для массового извлечения изображений из pdf?

@funky-future Очевидно, что два вопроса являются дубликатами, но у вашей цели-дубликата есть только два ответа, и один из этих двух ответов является ответом на спам, поэтому направление дублирования должно быть обратным, чтобы спасти этот вопрос от удара молотком для обмана.

Можете ли вы вспомнить, насколько хорошо NitroPDF может работать с векторными изображениями? Может ли pdfimages сделать это лучше / хуже, чем NitroPDF?

Для тех, кто наткнулся на этот вопрос здесь в поисках *как преобразовать PDF в кучу изображений *, который немного отличается от этого вопроса, но его легко спутать с ним и связан с ним, см. Мой ответ, который я только что добавил здесь: software recommendation - Extracting embedded images from a PDF - Ask Ubuntu .

Использование приложения для извлечения изображений не только быстрее и проще, но, прежде всего, ** точнее **, поскольку вы можете постепенно сохранять исходный формат изображения.