Перетворення PDF у чорно-білий з ghostscript


21

Аналогічно цьому питанню:

Перетворити PDF в сірий масштаб командного рядка в FLOSS?

У мене є PDF-документ і хочу його перетворити на чистий чорно-білий. Тому я хочу відкинути півтони. Для перетворення в масштаб сірого з ghostscript я можу використовувати цю команду:

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

Що я повинен змінити, щоб отримати однотонний, наприклад, лише кольори чорний і білий, без півтонів?

Відповіді:


6

Остання пропозиція дійсно перетворюється лише у масштаби сірого, а потім працює лише у тому випадку, якщо базовий документ використовує setrgbcolor . Це не спрацювало для мене, оскільки у мене був доктор , який використовував setcolor .

Мені вдалося переосмислити setcolor, щоб завжди встановити колір 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>

Минуло 15+ років, як я робив будь-які злом PostScript, тому вищезгадане може бути кульгавим, неправильним чи навіть випадковим - якщо ви знаєте, як зробити краще, будь ласка, підкажіть.


3

Я не впевнений, чи спрацює наступна пропозиція ... але, можливо, варто спробувати:

  1. конвертувати PDF в PostScript за допомогою простої pdf2psутиліти
  2. конвертувати цей PostScript назад у PDF, використовуючи /setrgbcolorпереопределений оператор PostScript

Це команди:

Спочатку

  pdf2ps color.pdf color.ps

Це дає вам color.psвихід.

Друге

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

Я спробував це і все ще залишився з відтінками сірого. niklasfi хоче однотонний.
frabjous

3

Це не ghostscript, але з Imagemagick це досить просто:

 convert -monochrome input.pdf output.pdf

10
Якість pdf у результаті набагато гірше оригіналу.
Хіндол

convert -monochrome -denisty 600?
Ілля w495 Нікітін

Здається, це робиться напівтонуванням; Я хочу, щоб усі кольори (але білий) перетворилися на чорний, незалежно від темряви.
р.рокет



0

Для чистого чорно-білого PDF-файлу вам потрібно перетворити його у формат ps, а потім у PDF для постскрипту:

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

поштовий скрипт до PDF -> чорно-білий

exec(" gs -sDEVICE=pdfwrite   -dNOPAUSE -dBATCH -dSAFER  -sOutputFile=file_pdf.pdf  filename.ps");
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.