Conversion d'un PDF en noir et blanc avec ghostscript

21

De même à cette question:

Convertir un PDF en niveaux de gris sur la ligne de commande dans FLOSS?

J'ai un document PDF et je veux le convertir en noir et blanc pur. Je veux donc supprimer les demi-teintes. Pour convertir en niveaux de gris avec ghostscript, je peux utiliser cette commande:

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

Que dois-je changer pour obtenir du monochrome, par exemple uniquement les couleurs noir et blanc et pas de demi-teintes?

niklasfi
la source

Réponses:

6

La dernière suggestion n'est en effet convertie qu'en niveaux de gris et ne fonctionne que si le document sous-jacent utilise setrgbcolor . Cela n'a pas fonctionné pour moi, car j'avais un doc, qui utilisait setcolor .

J'ai réussi à redéfinir setcolor pour toujours définir la couleur à 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>

Cela fait plus de 15 ans que je n'ai fait aucun piratage PostScript, donc ce qui précède peut être boiteux, incorrect ou même accidentel - si vous savez comment faire mieux, veuillez suggérer.

Poussée
la source
3

Je ne sais pas si la suggestion suivante fonctionnera ... mais cela peut valoir la peine d'essayer:

  1. convertir le PDF en PostScript en utilisant l' pdf2psutilitaire simple
  2. reconvertir ce PostScript en PDF tout en utilisant un /setrgbcoloropérateur PostScript redéfini

Ce sont les commandes:

Premier

  pdf2ps color.pdf color.ps

Cela vous donne color.ps en sortie.

Seconde

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
Kurt Pfeifle
la source
J'ai essayé cela et il me restait encore des nuances de gris. Niklasfi veut du monochrome.
frabjous
3

Ce n'est pas ghostscript, mais avec imagemagick, c'est assez simple:

 convert -monochrome input.pdf output.pdf
o-ville
la source
10
La qualité pdf qui en résulte est bien pire que l'original.
Hindol
convert -monochrome -denisty 600?
Ilia w495 Nikitin
Cela semble faire du tramage; Je veux que toutes les couleurs (sauf le blanc) soient converties en noir, quelle que soit l'obscurité.
g.rocket
0

Pour un PDF noir et blanc pur, vous devez le convertir au format ps puis en PDF pour le post-scriptum:

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

postscript en PDF -> noir et blanc

exec(" gs -sDEVICE=pdfwrite   -dNOPAUSE -dBATCH -dSAFER  -sOutputFile=file_pdf.pdf  filename.ps");
Tarun Kumar
la source