ImageMagick PDF в черно-белом PDF
Я хотел бы преобразовать PDF-файл в черно-белый PDF-файл с помощью ImageMagick. Но у меня есть две проблемы: я использую эту команду:
convert -colorspace Gray D:\in.pdf D:\out.pdf
- Но эта команда конвертирует только первую страницу... Как конвертировать все страницы?
- После использования этой команды разрешение ужасно... но если я использую
-density 300
опция размер файла увеличился более чем в два раза. Поэтому я хотел бы использовать ту же настройку DPI, но как использовать?
большое спасибо
1 ответ
Предполагая, что у вас установлены все необходимые инструменты командной строки, вы можете сделать следующее:
- Разделить и присоединиться к PDF с помощью
pdfseparate
а такжеpdfunite
(Инструменты Попплера). - Извлеките исходную плотность, используя
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-файлов в черно-белые.