Удалить / удалить все изображения из PDF с помощью Ghostscript или ImageMagick

Я хочу удалить / удалить все изображения в PDF, оставив только текст / шрифт в PDF любым инструментом командной строки.

Я пытался с помощью -dGraphicsAlphaBits=1 в команде Ghostscript, но изображения присутствуют, но как большой пиксель.

5 ответов

Решение

Нет, AFAIK, невозможно удалить все изображения в PDF с помощью инструмента командной строки.

Какова цель вашего запроса в любом случае? Сохранить на размер файла? Удалить информацию, содержащуюся в изображениях? Или же...?

Временное решение

К чему бы вы ни стремились, вот команда, которая уменьшит все изображения до разрешения 2 ppi (обновление: 1 ppi не работает). Который достигает двух целей одновременно:

  • уменьшить размер файла
  • сделать все изображения в основном непостижимыми

Вот как это сделать выборочно, только для изображений на странице 33 original.pdf:

gs                               \
  -o images-uncomprehendable.pdf \
  -sDEVICE=pdfwrite              \
  -dDownsampleColorImages=true   \
  -dDownsampleGrayImages=true    \
  -dDownsampleMonoImages=true    \
  -dColorImageResolution=2       \
  -dGrayImageResolution=2        \
  -dMonoImageResolution=2        \
  -dFirstPage=33                 \
  -dLastPage=33                  \
   original.pdf

Если вы хотите сделать это для всех изображений на всех страницах, просто пропустите -dFirstPage а также -dLastPage параметры.

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


Обновление: Первоначально я предложил использовать разрешение 1 PPI. Кажется, это не работает с Ghostscript. Я сейчас проверил с 2 PPI. Это работает.


Обновление 2: см. Также следующий (новый) вопрос с ответом:

Он предоставляет некоторый пример кода PostScript, который полностью удаляет все (растровые) изображения из PDF, оставляя остальную часть макета страницы неизменной.

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

Вы можете использовать черновой вариант cpdf:

cpdf -draft in.pdf -o out.pdf

Это должно работать в большинстве ситуаций, но подайте отчет об ошибке, если он не поможет вам.

Раскрытие: я автор cpdf.

Прошло время, и разработка Ghostscript продолжалась...

Последние выпуски имеют следующие новые параметры командной строки. Их можно добавить в командную строку:

  1. -dFILTERIMAGE: создает вывод, в котором удаляются все растровые рисунки.

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

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

Любые два из этих вариантов могут быть объединены.

Пример команды:

gs -o noimage.pdf -sDEVICE=pdfwrite -dFILTERIMAGE input.pdf

Более подробную информацию (включая некоторые иллюстративные снимки экрана) можно найти в моем ответе на вопрос "Как удалить все изображения из PDF-файла?",

       gs -o noImages.pdf   -sDEVICE=pdfwrite -dFILTERIMAGE                input.pdf
 gs -o noText.pdf   -sDEVICE=pdfwrite -dFILTERTEXT                 input.pdf
 gs -o noVectors.pdf   -sDEVICE=pdfwrite -dFILTERVECTOR               input.pdf
 gs -o onlyImages.pdf -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERTEXT  input.pdf
 gs -o onlyText.pdf -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERIMAGE input.pdf
 gs -o onlyVectors.pdf -sDEVICE=pdfwrite -dFILTERIMAGE  -dFILTERTEXT  input.pdf

К сожалению, для разделения изображений и текста по разным слоям утилита свободного / открытого программного обеспечения недоступна. Также не свободный как в пиве также...

Эта задача может быть достигнута только с помощью различных программных решений. Поскольку вы не исключили этого в своем вопросе, но попросили "любой возможный инструмент командной строки", я скажу вам мой любимый:

Доступна версия для использования CLI (которая включает в себя мощный SDK, обеспечивающий множество низкоуровневых манипуляций с PDF), и это поддерживается на всех основных платформах ОС, включая Linux.

Callas предлагает вам полнофункциональную бесплатную тестовую лицензию, которая включена (я полагаю) 14 дней.

Другие вопросы по тегам