Конвертировать 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
Другие вопросы по тегам