Конвертировать PDF в монохромный черно-белый с помощью командной строки

У меня есть 65-страничный PDF-файл с темно-серым текстом. (Фактический текст, а не картинка / изображение текста.) При печати на моем ч / б принтере текст становится размытым, потому что принтер пытается сделать его меньше черного. Я могу решить эту проблему постранично, импортировав страницы в inkscape, выбрав все пути, щелкнув по "Черному", который преобразует все цвета, включая серые, в чисто черный, и экспортировав обратно в PDF.

Есть ли способ сделать эти шаги в inkscape в командной строке (для пакетной обработки)?

Есть ли способ достичь того же результата (конвертировать pdf в черно-белое, 1-битную шкалу серого) без inkscape?


Редактировать. Есть похожие вопросы по Unix.SE и по суперпользователю, которые используют Ghostscript. Тем не менее, они только преобразуют файлы в оттенки серого с помощью параметра -sColorConversionStrategy=Gray , Опция -sColorConversionStrategy=/Mono приводит к ошибке Unrecoverable error: rangecheck in .putdeviceprops , Поскольку мой файл уже в оттенках серого, это не решает мою проблему.

7 ответов

Решение

Адаптируя этот ответ в SuperUser, это может быть достигнуто путем преобразования PDF в PostScript и обратно с использованием переопределенного setrgbcolor команда:

gs -o <output-file.pdf> -sDEVICE=pdfwrite \
-c "/osetrgbcolor {/setrgbcolor} bind def /setrgbcolor {pop [0 0 0] osetrgbcolor} def" \
-f <input-file.ps>

Этот ответ , данный в суперпользователе, сработал для меня, я не получил других ответов на этот вопрос, работающий в течение 2 минут. Кредиты идут goyinux за оригинальный ответ.

      gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -sColorConversionStrategy=Gray \
 -dProcessColorModel=/DeviceGray \
 -dCompatibilityLevel=1.4 \
 -dNOPAUSE \
 -dBATCH \
 input.pdf

Это сработало для GhostScript 10, в котором, очевидно, добавлена ​​поддержка затемнения векторов в 2022 году:

      gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -dBlackText -dBlackVector \
 -dNOPAUSE -dBATCH \
 input.pdf

Это то, что у меня сработало в Mint 20.04, чтобы затемнить текст PDF, пытаясь избежать относительно тяжелого продукта Adobe.

Чтобы взять PDF-файл с серым текстом и упростить его чтение:

  1. Преобразуйте PDF в отдельные файлы изображений:

    pdftoppm input_file.pdf output_file -png -rx 300 -ry 300
    

    где -rx 300 -ry 300 это DPI.

  2. Экспортируйте свои страницы PDF в файлы изображений, а затем обрабатывайте их в пакетном режиме.

    Установите XnConvert, используя его пакет.deb или Flatpak. Добавьте PDF в первую вкладку. Перейдите в ДобавитьКартаЧерные / белые точки. Белые точки должны быть выше, чем черные. Поставьте их на 190 и 127 соответственно (отрегулируйте оттуда).

    На вкладке вывода используйте следующее:

    • Имя файла: yourfilename
    • Формат: PDF
    • Качество: 99
    • Многостраничный: преобразование многостраничного файла в многостраничный файл.
  3. Установить gscan2pdfи откройте приложение. Перетащите выбранный пакет файлов из файлового менеджера на вертикальную полосу слева отgscan2pdfприложение. ФайлСохранить, выберите Даунсэмпл до 150 PPI, выберите имя для вашего нового PDF с более черным текстом.


Я подозреваю, что подход Adobe Reader тоже будет работать, но вот версия без продукта Adobe. С другой стороны, XnConvert кажется довольно гибким и легким. С другой стороны, я не думаю, что XnConvert имеет открытый исходный код.

В моем случае я сохраняю цветные сканы подписанных документов, но мне нужно перепечатать их без серого шума. Для этого случая хорошо работает

      convert -density 300 -threshold 75% input.pdf output.pdf

(на основании ответа )

Диапазон от 50% до 75% подходит для случаев, когда у вас есть цветное сканирование PDF (текст как изображение) с исходным разрешением 300 точек на дюйм.

В случае сохранения текста в формате PDF (а не изображения) вы получите значительное увеличение размера выходного файла.

Я написал сценарий оболочки для преобразования любого PDF в монохромный, т.е. в чисто черный и белый. Пожалуйста, проверьте это и дайте мне знать, если у вас возникнут проблемы.

convert -colorspace GRAY color.pdf gray.pdf
Другие вопросы по тегам