Poslední návrh se skutečně převede pouze na stupně šedi a funguje pouze v případě, že podkladový dokument používá setrgbcolor . To mi nefungovalo, protože jsem měl dokument, který používal setcolor .
Měl jsem úspěch s předefinováním setcolor aby byla barva vždy nastavena na 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>
Uplynulo více než 15 let od doby, kdy jsem hackoval PostScript, takže výše uvedené může být chabé, nesprávné nebo dokonce náhodné – pokud víte, jak to udělat lépe, navrhněte.
Nejsem si jistý, zda bude následující návrh fungovat... ale možná by stálo za to vyzkoušet:
- převeďte PDF na PostScript pomocí jednoduchého
pdf2ps
utility - převeďte tento PostScript zpět do PDF s použitím předefinovaného
/setrgbcolor
PostScriptový operátor
Toto jsou příkazy:
První
pdf2ps color.pdf color.ps
Získáte tak color.ps
jako výstup.
Za druhé
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
Není to ghostscript, ale s imagemagick je to docela jednoduché:
convert -monochrome input.pdf output.pdf
Proč máme v LINUXu 3 typy X-výběrů?
Existuje linuxový ekvivalent Programmer's Notepad nebo Notepad++