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

8

У меня есть файл PDF, содержащий карты здания, в котором я работаю, здесь:

http://www.libsys.und.edu/dev/FloorPlans_All.pdf

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

До сих пор я пробовал следующие программы с графическим интерфейсом:

  • Adobe Reader: позволяет выбрать текст, но не фоновые изображения
  • FoxIt PDF Viewer: позволяет выбирать текст, но не фоновые изображения
  • XPDF в Ubuntu 10.10: позволяет выделять текст, но не фоновые изображения

А также следующие программы командной строки:

  • pdfimages: извлекает значки, обозначающие ванные комнаты просто отлично, но не фоновые изображения
  • pdftohtml: то же самое, что и pdfimages, плюс он делает плохо размеченный HTML-документ
  • pdfextract: такой же, как pdfimages
  • конвертировать: успешно сохраненные изображения, но с записанным в них текстом

Я даже пытался открыть PDF вручную в текстовом редакторе и извлечь объекты потока, вставив их в новый файл и сохранив его с расширением .jpg, .png или .bmp (каждый по очереди). Учитывая, как мало я знаю о внутренней структуре файлов PDF, неудивительно, что это не сработало.

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

Уилл Мартин
источник
Как я обычно решаю эту задачу: (1) Используйте qpdfдля преобразования двоичных частей в ASCII, насколько это возможно. (2) Используйте текстовый редактор, чтобы сделать весь текст невидимым, который я не хочу видеть на экране или в распечатках (можно легко и без ущерба для таблицы XRef переключить флаг невидимости ). (3) Повторно отогнать результат с Ghostscript, чтобы свести к минимуму его размер. - К сожалению, ваш файл больше не загружается для демонстрации процедуры ...
Курт Пфайфл

Ответы:

7

Вы можете загрузить библиотеку XPDF с http://www.foolabs.com/xpdf/download.html для Linux и Windows. Затем запустите, pdfimages -j input.pdf outputи вы должны получить output-000.jpg, output-001.jpgи т. Д. Кроме того, проверьте http://linuxcommand.org/man_pages/pdfimages1.html для получения дополнительных возможностей использования.

mybluevan
источник
1
Исправление, похоже, что изображение - это векторная графика, непосредственно встроенная в PDF. Попробуйте открыть его в чем-то вроде Inkscape или Adobe Illustrator, который обрабатывает векторную графику.
mybluevan
Ах, ха! Карты - векторная графика - неудивительно, что у меня были такие проблемы! Inkscape, кажется, открыл его очень хорошо, и я могу отредактировать его в соответствии с моим сердцем. Спасибо!
Уилл Мартин
2

Хорошо, после того, как я возился с этим в течение 5 минут, мой анализ заключается в том, что PDF даже страннее, чем я думал, и это о чем-то говорит.

Не уверен, каков ваш бюджет, но с Acrobat Pro Extended 9 вы можете использовать:

A. Инструменты, Расширенное редактирование, Touchup Text Tool

-Select All
-Right click, Properties
-Text tab
-Select a standard font (e.g. Arial), close
-Hit Delete

B. Инструменты, Расширенное редактирование, Инструмент Touchup Object

-Выберите объект (вы можете получить большинство, но не все, из них (например, значки компьютеров учеников не могут быть выбраны), затем удалите

Вот как выглядела Страница 1 после быстрой очистки: http://dl.dropbox.com/u/7434256/p1test.pdf

Крейг Н
источник
Странно преуменьшение. Я не знаю историю этого файла, но Acrobat Pro 8 доставил нам неприятности. Inkscape добился цели, хотя, слава богу. Теперь, чтобы преобразовать все это в некоторые правильные SVG-файлы, из которых мы можем генерировать растровую графику ...
Will Martin
1
Работа, которую вы проделали над оригинальным PDF (который, к сожалению, больше не доступен для меня), не самая лучшая. Ваш файл все еще ~ 3 МБ. Он содержит много + много неиспользуемых объектов. Он даже содержит экземпляр /AAоператора (для автоматического действия ), который делает его потенциально опасным PDF-файлом. Ghostscript смог довести его до 60 кБайт без потери видимого содержимого. (Метаданные, содержащиеся в файле, распространяются на 17 различных объектов. Метаданные предполагают, что существует 17 различных версий / модификаций этого файла с момента его создания 2011-01-18 гг.)
Курт Пфайфл
@pipitas Я рад, что проверил это снова, оказалось, что Apache не работал на этом сервере. Оригинальный PDF снова доступен. Это все еще раздражает, хотя. С тех пор я обнаружил, что карты были сгенерированы из файлов AutoCAD DXF, которые создают очень уродливую векторную графику. На каждой карте есть сотни отдельных путей, каждый из которых представляет собой отдельную линию с двумя конечными точками. Это, вероятно, облегчило для архитектора изменение отдельных участков стены или чего-то еще, но это боль в заднице для всего остального.
Уилл Мартин
@Will Martin: Ой! Это довольно большой PDF-файл, содержащий множество внутренних, скрытых обновлений файлов (и поэтому: мусор с точки зрения пользователя). - 16 страниц по 16 Мбайт довольно «тяжелые» для просто выглядящей векторной графики. Не менее 16 различных слоев («Дополнительный контент» на языке PDF), по одному на каждую страницу. Я бы не стал разбираться в этом беспорядке только с помощью текстового редактора ...
Курт Пфайфл
2
@pipitas: Спасибо - честно. Хотя я бы не назвал то, что я делал, «работой» - я просто демонстрировал (после пары минут игры), что это возможно с Acrobat. Гарантия возврата денег и все такое. ;)
Крейг Х
1

Возьмите PDF, созданный Крейгом Н, и немного оптимизируйте его, запустив Ghostscript. В Windows командная строка:

gswin32c.exe ^
   -o p1test-gs-optimized.pdf ^
   -sDEVICE=pdfwrite ^
   -dPDFSETTIINGS=/prepress ^
    p1test.pdf

В Linux / Unix / Mac OS X выполните:

gs \
   -o p1test-gs-optimized.pdf \
   -sDEVICE=pdfwrite \
   -dPDFSETTIINGS=/prepress \
    p1test.pdf

Это уменьшит размер файла с 3.000 кБайт до 60 кБайт без потери содержимого. Тогда его импорт в Inkscape (или InDesign, Illustrator, ...) должен быть намного быстрее ....

Курт Пфайфл
источник
1

... вы можете попробовать Photoshop. Он читает файлы PDF, и «возможно», он возник в PS и, возможно, все еще содержит слои ... но это очень далеко.

aart12
источник
0

В среде Linux я использовал pdfmod для извлечения всех изображений за один раз. См. Https://wiki.gnome.org/Apps/PdfMod или, для пользователей Ubuntu, https://apps.ubuntu.com/cat/applications/pdfmod/.

Чтобы скачать и установить его в Ubuntu, достаточно набрать sudo apt-get install pdfmod.

  • Запустите графический интерфейс pdfmod (введите в pdfmodпанели инструментов или в терминале командной строки)
  • Откройте документ PDF
  • Выберите все страницы (или любые, с которых вы хотите извлечь изображения)
  • Пункт меню «Правка» предоставит возможность извлечь столько изображений, сколько их можно извлечь в выбранном диапазоне ( export n imagesс n соответствующим числом). Вы также можете получить доступ к этой команде, наведя указатель мыши на выделение и активировав локальное меню (щелкните правой кнопкой мыши для правой руки).
  • Как только вы это сделаете, откроется новое окно, в котором вы выберете место для сохранения изображений.

Надеюсь это поможет.

XavierStuvw
источник
Пожалуйста, прочитайте, Как я рекомендую программное обеспечение для некоторых советов относительно того, как Вы должны рекомендовать программное обеспечение. Предоставьте больше, чем просто ссылку, например, а также некоторую дополнительную информацию о самом программном обеспечении и о том, как его можно использовать для решения рассматриваемой проблемы. Вы могли бы даже включить некоторые примеры командных строк.
DavidPostill
@DavidPostill. Спасибо за указание на это. Готово, я верю.
XavierStuvw
Гораздо лучше ...;)
DavidPostill
Теперь я знаю, что я могу требовать от ответов на мои сообщения :-)
XavierStuvw
-1

Откройте документ на экране, увеличьте изображение, чтобы сделать его как можно больше, но все еще видно. Нажмите alt + prnt scrn (или эквивалент в вашей операционной системе), и он должен сделать снимок экрана программы. Теперь откройте краску или ваш любимый графический редактор (фотошоп, gimp и т. Д.), Вставьте изображение и обрежьте все, что вам не нужно.

Уилл Ганн
источник
Это также включает в себя значки, которые находятся над фоновым изображением на снимках экрана, а также использует разрешение экрана. Должен быть лучший способ.
Захиэль