Как удалить изображения из файла PDF

13

У меня довольно большой (~ 100 МБ) PDF-документ с большим количеством изображений (в качестве иллюстраций и фоновых изображений), и я хотел бы получить копию этого pdf без изображений, но я не могу узнать, как это сделать. сделай это.

Я не говорю о преобразовании его только в текст, я хотел бы сохранить абзацы / таблицы / несколько столбцов, как они есть.

Мне комфортно с командной строкой, и у меня есть несколько компьютеров с разными дистрибутивами, которые я могу использовать.

Ornux
источник
Поскольку мы говорим о документе на 500 страниц с несколькими изображениями на каждой странице, я ищу автоматический способ удаления каждого изображения.
Ornux

Ответы:

14
cpdf -draft original.pdf -o version_without_images.pdf

Этого нет в репозиториях, но вы можете найти загрузку ( предварительно скомпилированную или исходную ) на их веб-сайте .


Руководство :

15.1 Проекты документов

Опция -draft удаляет растровые (фотографические) изображения из файла, чтобы на них можно было печатать с меньшим количеством чернил. При желании можно добавить опцию -boxes, заполняя пустые места перечеркнутым прямоугольником, обозначающим, где было изображение. Это не гарантируется быть полностью видимым во всех случаях (растровое изображение может быть частично покрыто векторными объектами или вырезано в оригинале). Например:

 cpdf -draft -boxes in.pdf -o out.pdf
Rinzwind
источник
1
Это именно то , что я искал. Выходной файл просто идеален. Спасибо огромное!
Ornux
@Rinzwind Пожалуйста, обратите внимание, что ссылка «их веб-сайт» на самом деле идет в ZIP-файл.
Джос
Хм ... для меня это добавляет почти случайные строки поверх текста, и размер файла на самом деле немного увеличивается, а не уменьшается.
Хеннинг
23

Последние версии Ghostscript тоже могут это сделать. Просто добавьте параметр -dFILTERIMAGEв вашу команду.

Есть еще два новых параметра, которые можно добавить, чтобы выборочно удалять типы контента «вектор» и «текст» :

  1. -dFILTERIMAGE: производит вывод, где удаляются все растровые изображения.

  2. -dFILTERTEXT: производит вывод, где удаляются все текстовые элементы.

  3. -dFILTERVECTOR: создает вывод, где удаляются все векторные рисунки.

Любые два из этих вариантов могут быть объединены. (Если вы объедините все 3, вы получите все страницы пустыми ...)

Примеры

Вот снимок экрана с примером страницы PDF, которая содержит все 3 типа контента, упомянутых выше:

Снимок экрана оригинальной PDF-страницы, содержащей элементы "image", "vector" и "text".
Снимок экрана оригинальной PDF-страницы, содержащей элементы "image", "vector" и "text".


Выполнение следующих 6 команд создаст все 6 возможных вариантов оставшегося содержимого:

 gs -o noIMG.pdf -sDEVICE = pdfwrite -dFILTERIMAGE input.pdf
 gs -o noTXT.pdf -sDEVICE = pdfwrite -dFILTERTEXT input.pdf
 gs -o noVCT.pdf -sDEVICE = pdfwrite -dFILTERVECTOR input.pdf

 gs -o onlyIMG.pdf -sDEVICE = pdfwrite -dFILTERVECTOR -dFILTERTEXT input.pdf
 gs -o onlyTXT.pdf -sDEVICE = pdfwrite -dFILTERVECTOR -dFILTERIMAGE input.pdf
 gs -o onlyVCT.pdf -sDEVICE = pdfwrite -dFILTERIMAGE -dFILTERTEXT input.pdf

Следующее изображение иллюстрирует результаты:


Верхний ряд слева: весь текст удален; все "изображения" удалены; все "векторы" удалены. Нижний ряд слева: сохранен только «текст»; сохраняются только «изображения»; сохранились только «векторы».
Верхний ряд слева: весь текст удален;  все "изображения" удалены;  все "векторы" удалены.  Нижний ряд слева: сохранен только «текст»;  сохраняются только «изображения»;  сохранились только «векторы».


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

В то время как @Rinzwind ответ является Right Thing , я хотел бы просто прокомментировать решение « на полпути». Обычно вы можете значительно уменьшить размер изображений, используя ghostscript с

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen \
   -dNOPAUSE -dQUIET -dBATCH -sOutputFile=small.pdf original.pdf

... это иногда удобно для корректуры. Страница руководства по написанию PDF находится здесь .

Rmano
источник
@KurtPfeifle /screenбудет (среди прочего) устанавливать разрешение растровых изображений на 72dpi. Так что да, если у вас есть изображения с меньшим DPI, это может увеличить размер файла. Вот почему я использовал слово «обычно» (в смысле «не всегда, но довольно часто»). Не стесняйтесь понижать голос, что вы хотите.
Романо
Выполните следующую команду: for s in screen default ; do gs -o /dev/null -sDEVICE=pdfwrite -dPDFSETTINGS=/${s} -c "currentpagedevice {exch ==only ( ) print === } forall" | sort | tee ghostscript---pdfwrite-PDFSETTINGS-${s}--pagedevice-settings.txt; done. Он создаст два текстовых файла, которые вы можете сравнить, используя sdiff -sbB $[file1}.txt ${file2}.txt. Теперь вы точно и полностью знаете все представленные настройки -dPDFSETTINGS=/screen!
Курт Пфайфл
Выполнено. До сих пор не вижу, какая опция может дать больший файл, /screenчем в /default- 72dpi против 150dpi, оптимизированный, отменить предварительный просмотр EPS ... но, эй, не большая проблема. Люди будут проверять и выбирать лучшее решение.
Романо
Извините, может быть, я должен извиниться за дерзость моего первого заявления. Честно говоря, я просто кажется , вспомнить из моих предыдущих исследований (несколько YRS назад) , что /screenдало очень плохие результаты. Возможно, моя память не работает, или я перепутал это /epub. Команда, которую я дал вам, была из памяти, потому что я был совершенно уверен, что она покажет, что я имел в виду. Теперь я снова запустил его, я больше не вижу того, что ожидал: более расширенные тесты я выполнил несколько лет назад. Затем многие шрифты (CID? / CFF?) Получили растрированные размеры вздутие живота PDF-файлов. Я должен снова вернуться к этой проблеме, как только у меня будет больше времени ... :-)
Курт Пфайфл
0

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

Sudheer
источник
Я только что установил его, чтобы попробовать, но я не вижу автоматизированного способа сделать это. Учитывая, что это документ на 500 страниц, я не рассматриваю ручное удаление как решение здесь. Я что-то пропустил ?
Ornux
нет, вы ничего не пропустили, я думал, что изображения большого размера, поэтому вы хотите удалить их, никогда не думал о таком количестве изображений. в любом случае хороший вопрос.
Судхен