ImageMagick pdf в черно-белый pdf

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

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

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


person szuniverse    schedule 02.02.2013    source источник


Ответы (1)


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

  1. Разделяйте и объединяйте PDF с помощью pdfseparate и pdfunite (инструменты Poppler).
  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-файлов в черно-белые.

person trybik    schedule 19.06.2013