Витяг фонових зображень з PDF-файлу?


8

У мене є PDF-файл, що містить карти будівлі, в якій я працюю, тут:

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

Оригінальні вихідні файли були втрачені, і мене попросили витягнути карти карти, бажано, без тексту та піктограм, які були накладені поверх них. Це виявилося прикро складно.

Поки я спробував такі програми GUI:

  • 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, щоб максимально зменшити його розмір. - На жаль, ваш файл більше не можна завантажити, щоб продемонструвати процедуру ...
Kurt Pfeifle

Відповіді:


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 більше варіантів використання.


1
Виправлення, схоже, що зображення є векторною графікою, безпосередньо вбудованою в PDF. Спробуйте відкрити його в чомусь на зразок Inkscape або Adobe Illustrator, який обробляє векторну графіку.
mybluevan

Ах ХА! Карти - це векторна графіка - недарма у мене виникли такі проблеми! Inkscape, здається, відкрив це просто чудово, і я можу відредагувати його на зміст серця. Дякую!
Буде Мартін

2

Ок, після того, як псуюся з цим протягом 5 хвилин, мій аналіз полягає в тому, що PDF навіть більш дивний, ніж я спочатку думав, і це щось говорить.

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

A. Інструменти, розширене редагування, сенсорний текстовий інструмент

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

B. Інструменти, розширене редагування, інструмент дотику об’єктів

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

Ось як виглядала Page 1 після швидкого очищення: http://dl.dropbox.com/u/7434256/p1test.pdf


Дивно - заниження. Я не знаю історії цього файлу, але Acrobat Pro 8 створив нам проблеми. Inkscape зробив трюк, однак, дякую добру. Тепер, щоб перетворити все це на деякі належні SVG, з яких ми можемо генерувати растрову графіку з ...
Буде Мартін

1
Робота, яку ви зробили в оригінальному PDF (який, на жаль, мені більше не доступний), не найкращий. Ваш файл все ще ~ 3 Мбіт. Він містить багато + багато невикористаних об'єктів. Він навіть містить примірник /AAоператора (для автоматичної дії ), що робить його потенційно небезпечним PDF-файлом. Ghostscript зміг звести його до 60 кБ, не втрачаючи жодного видимого вмісту. (Метадані, що містяться у файлі, поширюються на 17 різних об’єктів. Метадані також дозволяють існувати 17 різних змін / модифікацій цього файлу з часу його створення 2011-01-18.)
Kurt Pfeifle,

@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 та, можливо, все ще має шари ... але це дуже давно.


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 відповідним числом). Ви також можете отримати доступ до цієї команди, навевши курсор миші на вибір і активуючи місцеве меню (клацніть правою кнопкою миші праворуч).
  • Як тільки ви продовжите це, відкриється нове вікно, де ви виберете місце для збереження зображень.

Сподіваюсь, це допомагає.


Будь ласка, прочитайте Як я рекомендую програмне забезпечення для деяких порад щодо того, як вам слід рекомендувати програмне забезпечення. Надайте більше, ніж просто посилання, наприклад, деяку додаткову інформацію про саме програмне забезпечення та те, як його можна використовувати для вирішення проблеми у питанні. Ви навіть можете включити кілька прикладних командних рядків.
DavidPostill

@DavidPostill. Дякуємо, що вказали на це. Вчинено, я вважаю.
XavierStuvw

Набагато краще ...;)
DavidPostill

Тепер я знаю, чого я можу вимагати від відповідей на свої повідомлення :-)
XavierStuvw

-1

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


Сюди також входять піктограми, що знаходяться над фоновим зображенням на знімках екрана, плюс він використовує роздільну здатність екрана. Має бути кращий спосіб.
Захієль
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.