Преобразование PDF в черно-белый с помощью ghostscript

аналогично этому вопросу:

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

У меня есть PDF-документ и я хочу преобразовать его в чистый черно-белый. Поэтому я хочу отказаться от полутонов. Для преобразования в оттенки серого с помощью ghostscript я могу использовать следующую команду:

gs 
 -sOutputFile=output.PDF 
 -sDEVICE=pdfwrite 
 -sColorConversionStrategy=Gray 
 -dProcessColorModel=/DeviceGray 
 -dCompatibilityLevel=1.4 
  input.PDF < /dev/null

что мне нужно изменить, чтобы получить монохромный, например, только цвета черно-белые и без полутонов?

5
задан Community
источник

6 ответов

последнее предложение действительно преобразуется только в оттенки серого, а затем работает только в том случае, если базовый документ использует setrgbcolor. Это не сработало для меня, так как у меня был док, который использовал setcolor.

мне удалось переопределить setcolor всегда устанавливать цвет на 0,0,0:

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

прошло более 15 лет с тех пор, как я делал какие-либо взломы PostScript, поэтому вышесказанное может быть хромым, неправильным или даже случайным-если вы знаете, как сделать лучше, пожалуйста, предложите.

5
отвечен Surge 2011-02-22 19:45:56
источник

Я не уверен, что следующее предложение будет работать... но, возможно, стоит попробовать:

  1. преобразование PDF в PostScript с помощью простого pdf2ps утилиты
  2. преобразовать этот PostScript обратно в PDF при использовании переопределенного /setrgbcolor оператор PostScript

эти команды:

First

  pdf2ps color.pdf color.ps

это дает вам color.ps как выходной.

Second

gs \
-o bw-from-color.pdf \
-sDEVICE=pdfwrite \
-c "/setrgbcolor{0 mul 3 1 roll 0 mul 3 1 roll 0 mul 3 1 roll 0 mul add add setgray}def" \
-f color.ps
3
отвечен Kurt Pfeifle 2011-06-22 12:23:15
источник

Это не ghostscript, но с imagemagick это довольно просто:

 convert -monochrome input.pdf output.pdf
3
отвечен o-town 2012-05-14 16:05:02
источник

похоже, это сработает:

1) преобразовать файл монохром с gs

gs -sDEVICE=psmono \
  -dNOPAUSE -dBATCH -dSAFER \
  -sOutputFile=combined.ps \
  first.pdf \
  second.ps \
  third.eps [...]

3) преобразуйте файл Postscript обратно в PDF с помощью ps2pdf или gs

(кредит: http://www.linuxjournal.com/content/tech-tip-using-ghostscript-convert-and-combine-files)

1
отвечен Ed L 2012-09-26 16:41:53
источник

для серой шкалы PDF:

С помощью GhostScript

в PHP коде используйте этот скрипт

exec("'gs' '-sOutputFile=outputfilename.pdf' '-sDEVICE=pdfwrite' '-sColorConversionStrategy=Gray' '-dProcessColorModel=/DeviceGray' '-dCompatibilityLevel=1.4'  'inputfilename.pdf'",$output);

полезно url

http://www.linuxjournal.com/content/tech-tip-using-ghostscript-convert-and-combine-files

1
отвечен Tarun Kumar 2014-05-28 13:24:45
источник

для чистого черно-белого PDF, вам нужно преобразовать его в формат ps, а затем в PDF для postscript:

exec(" gs -sDEVICE=psmono  -dNOPAUSE -dBATCH -dSAFER  -sOutputFile=combined.ps  $pdf");

postscript в PDF - > черно-белый

exec(" gs -sDEVICE=pdfwrite   -dNOPAUSE -dBATCH -dSAFER  -sOutputFile=file_pdf.pdf  filename.ps");
0
отвечен Tarun Kumar 2014-05-28 13:25:27
источник

Другие вопросы command-line conversion ghostscript linux pdf