GNU/Linux >> Znalost Linux >  >> Linux

Převod PDF na černobílý pomocí ghostscriptu

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:

  1. převeďte PDF na PostScript pomocí jednoduchého pdf2ps utility
  2. 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

Linux
  1. Hackování s Kali na Black Hat USA 2016

  2. Převod PDF do CMYK (s rozpoznáním identifikace CMYK)

  3. Sloučit soubory pdf s číselným řazením

  1. Jak převést PDF do JPG pomocí příkazového řádku v Linuxu?

  2. PDF čtečka s rozdělenou obrazovkou pro Linux

  3. Jak převést fotografii na černobílý obrázek pomocí ImageMagick?

  1. Zmenšete velikost PDF pomocí tohoto triku s příkazovým řádkem

  2. jak převést PDF do PNG bez převodu bílého pozadí úvodní průhlednosti

  3. Nahraďte každý znak prázdného místa na konci každého řádku '_'