Der letzte Vorschlag konvertiert tatsächlich nur in Graustufen und funktioniert dann nur, wenn das zugrunde liegende Dokument setrgbcolor verwendet . Das hat bei mir nicht funktioniert, da ich ein Dokument hatte, das setcolor verwendete .
Ich hatte Erfolg mit der Neudefinition von setcolor um die Farbe immer auf 0,0,0 zu setzen:
gs -o <output-file.pdf> -sDEVICE=pdfwrite \
-c "/osetcolor {/setcolor} bind def /setcolor {pop [0 0 0] osetcolor} def" \
-f <input-file.ps>
Es ist mehr als 15 Jahre her, seit ich PostScript-Hacking durchgeführt habe, daher kann das Obige lahm, falsch oder sogar versehentlich sein - wenn Sie wissen, wie Sie es besser machen können, schlagen Sie es bitte vor.
Ich bin mir nicht sicher, ob der folgende Vorschlag funktioniert ... aber es könnte sich lohnen, es auszuprobieren:
- wandeln Sie das PDF mit dem einfachen
pdf2ps
in PostScript um Dienstprogramm - Konvertieren Sie dieses PostScript zurück in PDF, während Sie einen neu definierten
/setrgbcolor
verwenden PostScript-Operator
Dies sind die Befehle:
Zuerst
pdf2ps color.pdf color.ps
Das ergibt color.ps
als Ausgabe.
Zweitens
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
Es ist kein Ghostscript, aber mit imagemagick ist das ganz einfach:
convert -monochrome input.pdf output.pdf