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