ImageMagick PDF в черно-белом PDF

Я хотел бы преобразовать PDF-файл в черно-белый PDF-файл с помощью ImageMagick. Но у меня есть две проблемы: я использую эту команду:

convert -colorspace Gray  D:\in.pdf D:\out.pdf
  1. Но эта команда конвертирует только первую страницу... Как конвертировать все страницы?
  2. После использования этой команды разрешение ужасно... но если я использую -density 300 опция размер файла увеличился более чем в два раза. Поэтому я хотел бы использовать ту же настройку DPI, но как использовать?

большое спасибо

1 ответ

Решение

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

  1. Разделить и присоединиться к PDF с помощью pdfseparate а также pdfunite (Инструменты Попплера).
  2. Извлеките исходную плотность, используя pdfinfo плюс grep/egrep и, например, sed, Это не гарантирует тот же размер файла PDF, только тот же DPI.

Собрав все это вместе, вы можете получить ряд команд bash:

pdfseparate in.pdf temp-%d.pdf; for i in $(seq $(ls -1 temp-*.pdf | wc -l)); do mv temp-$i.pdf temp-$(printf %03d $i).pdf; done
for f in temp-*.pdf; do convert -density $(pdfinfo $f | egrep -o 'Page size:[[:space:]]*[0-9]+(\.[0-9]+)?[[:space:]]*x[[:space:]]*[0-9]+(\.[0-9]+)?' | sed -e 's/^Page size:\s*//'| sed -e 's/\s*x\s*/x/') -colorspace Gray {,bw-}$f; done
pdfunite bw-temp-*.pdf out.pdf
rm {bw-,}temp-*.pdf

Примечание 1: там как грязный обходной путь (for/wc/seq/printf) для правильного заказа 10-999 страниц PDF-файлов (я не выяснил, как поставить ведущие нули в pdfseparate).

Примечание 2: Я полагаю, что ImageMagick рассматривает PDF-файлы как просто еще один двоичный файл изображения, так что, например, в основном для текстовых файлов это приведет к огромным PDF-файлам. Таким образом, это очень плохой метод для преобразования текстовых PDF-файлов в черно-белые.

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