Convertendo um PDF para preto e branco com o ghostscript


21

Da mesma forma que esta pergunta:

Converter um PDF em escala de cinza na linha de comando no FLOSS?

Eu tenho um documento PDF e quero convertê-lo para 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 preciso alterar para ficar monocromático, por exemplo, apenas as cores preto e branco e sem meios-tons?

Respostas:


6

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

Tive sucesso ao redefinir 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 fiz hackers PostScript, portanto, o que precede pode ser manco, incorreto ou até acidental - se você souber fazer melhor, sugira.


3

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

  1. converter o PDF em PostScript usando o pdf2psutilitário simples
  2. converta esse PostScript de volta em PDF enquanto estiver usando um /setrgbcoloroperador PostScript redefinido

Estes são os comandos:

Primeiro

  pdf2ps color.pdf color.ps

Isso fornece color.pscomo 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

Eu tentei isso e ainda fiquei com tons de cinza. Niklasfi quer monocromático.
frabjous

3

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

 convert -monochrome input.pdf output.pdf

10
A qualidade resultante do pdf é muito pior que a original.
Hindol

convert -monochrome -denisty 600?
Ilia w495 Nikitin

Isso parece meio-tom; Quero que todas as cores (exceto o branco) sejam convertidas em preto, independentemente da escuridão.
g.rocket



0

Para PDF preto e branco puro, você precisa convertê-lo para o formato ps e depois para 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");
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.