Преобразовать PDF в оттенки серого в командной строке во FLOSS?

81

У меня есть цветной файл PDF, и я собираюсь распечатать его, а затем сделать ксерокопию в черно-белом варианте. Я хотел бы знать, что это такое в черно-белом, прежде чем его фотокопировать. Возможно ли «серое масштабирование» PDF в командной строке, используя бесплатное программное обеспечение? Я использую Ubuntu 9.10.

Рори
источник

Ответы:

36

ImageMagick может сделать это.

convert -colorspace GRAY color.pdf gray.pdf

через это письмо

Iain
источник
27
Это значительно снижает качество. Решение @goyinux лучше.
Йоханнес Вайс
7
Convert фактически растеризует содержимое PDF. Таким образом, если PDF-файл уже не содержит только растровые изображения (например, отсканированный документ), такой подход не имеет смысла.
m000
2
Если вы не используете -density 400 -quality 100параметры - это хорошо работает
Burtek
2
Действительно, есть ли что-то, что ImageMagick не может сделать? :)
BalinKingOfMoria
-density 400 -quality 100создает огромные файлы. +1 за решение @ goyinux.
Станимир Стоянов
156

Лучше:

gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -sColorConversionStrategy=Gray \
 -dProcessColorModel=/DeviceGray \
 -dCompatibilityLevel=1.4 \
 -dNOPAUSE \
 -dBATCH \
 input.pdf
Eroen
источник
1
Согласитесь, это дает гораздо лучшие результаты, чем конвертирование, но иногда он вращает PDF, что немного раздражает!
TDC
9
Просто понял, что вы можете отключить это с-dAutoRotatePages=/None
tdc
1
Я только что выполнил эту команду на 58-мегабайтном PDF-файле, который был уже в оттенках серого (получен от сканера), и в результате был 10 МБ и выглядел точно так же. Приятно!
Арчи
1
Хорошо работает и на Windows! Просто удалите `\` и поместите все в одну строку.
ixe013
1
Фактически, это терпит неудачу с этой ошибкойGPL Ghostscript 9.10: Unable to convert color space to Gray, reverting strategy to LeaveColorUnchanged.
jjmerelo
13

Вот небольшой скрипт, который в дополнение к преобразованию в градациях серого может объединять несколько входных файлов. Чтобы использовать скрипт, поместите в файл следующие строки, например «convert2gray.sh»

#!/bin/bash
gs -sOutputFile=converted.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dCompatibiltyLevel=1.4 -dNOPAUSE -dBATCH $@

и сделать его исполняемым

chmod +x convert2gray.sh

затем

./convert2gray.sh input1.pdf input2.pdf … lastinput.pdf

создаст один PDF-файл "convert.pdf", который содержит все страницы из входных файлов, преобразованных в оттенки серого.

Мне пришлось распечатать все файлы в нескольких оттенках серого, и я нашел, что это самый простой способ, так как вы можете распечатать все после проверки одной командой.

лиз
источник
FWIW, pdftk также может объединять PDF-файлы.
user1338062