Конвертировать 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-файл с серым текстом и упростить его чтение:
Преобразуйте PDF в отдельные файлы изображений:
pdftoppm input_file.pdf output_file -png -rx 300 -ry 300
где
-rx 300 -ry 300
это DPI.Экспортируйте свои страницы PDF в файлы изображений, а затем обрабатывайте их в пакетном режиме.
Установите XnConvert, используя его пакет.deb или Flatpak. Добавьте PDF в первую вкладку. Перейдите в Добавить → Карта → Черные / белые точки. Белые точки должны быть выше, чем черные. Поставьте их на 190 и 127 соответственно (отрегулируйте оттуда).
На вкладке вывода используйте следующее:
- Имя файла: yourfilename
- Формат: PDF
- Качество: 99
- Многостраничный: преобразование многостраничного файла в многостраничный файл.
Установить
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 в монохромный, т.е. в чисто черный и белый. Пожалуйста, проверьте это и дайте мне знать, если у вас возникнут проблемы.