Convertendo um PDF para preto e branco com ghostscript

17

Semelhante a esta pergunta:

Convert a PDF to greyscale on the command line in FLOSS?

Eu tenho um documento em PDF e quero convertê-lo em preto e branco puro. Então eu quero descartar meios-tons. Para converter em escala de cinza com ghostscript, posso usar este comando:

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

O que eu tenho que mudar para obter monocromático, por exemplo? apenas as cores preto e branco e sem meios-tons?

    
por niklasfi 17.10.2010 / 16:50

6 respostas

5

A última sugestão, na verdade, só converte em escala de cinza e só funciona se o documento subjacente usar setrgbcolor . Isso não funcionou para mim, já que eu tinha um doc, que usava setcolor .

Eu tive sucesso com a redefinição de setcolor para sempre definir a cor para 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>

Já faz mais de 15 anos que eu fiz qualquer hacking de PostScript, então o que está acima pode ser ruim, incorreto ou até mesmo acidental - se você sabe como fazer melhor, por favor sugira.

    
por 22.02.2011 / 20:18
3

Não tenho certeza se a seguinte sugestão funcionará ... mas pode valer a pena experimentar:

  1. converta o PDF em PostScript usando o utilitário simples pdf2ps
  2. converta esse PostScript de volta para PDF usando um operador /setrgbcolor PostScript redefinido

Estes são os comandos:

Primeiro

  pdf2ps color.pdf color.ps

Isso lhe dá color.ps como saída.

Segundo

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
    
por 23.01.2011 / 03:29
3

Não é ghostscript, mas com o imagemagick isso é bem simples:

 convert -monochrome input.pdf output.pdf
    
por 14.05.2012 / 18:05
1

Parece que funcionaria:

1) Converta o arquivo para monocromático com gs

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

3) Converta o arquivo Postscript de volta para um PDF com ps2pdf ou gs

(crédito para: link )

    
por 26.09.2012 / 18:41
1

para PDF em escala de cinza:

Usando o GhostScript

NO código PHP, use este script

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

URL útil link

    
por 28.05.2014 / 14:59
0

Para PDF preto e branco puro, você precisa convertê-lo em formato ps e depois em PDF para postscript:

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

postscript para PDF - > preto e branco

exec(" gs -sDEVICE=pdfwrite   -dNOPAUSE -dBATCH -dSAFER  -sOutputFile=file_pdf.pdf  filename.ps");
    
por 28.05.2014 / 15:03