web-dev-qa-db-ja.com

PDFをゴーストスクリプトで白黒に変換する

この質問と同様に:

FLOSSのコマンドラインでPDFグレースケールに変換しますか?

PDFドキュメントがあり、それを純粋な白黒に変換したい。だからハーフトーンを捨てたい。 ghostscriptでグレースケールに変換するには、次のコマンドを使用できます。

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

モノクロを取得するには何を変更する必要がありますか。白黒のみで、ハーフトーンはありませんか?

21
niklasfi

最後の提案は確かにグレースケールにのみ変換され、基礎となるドキュメントが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>

私がPostScriptのハッキングを行ってから15年以上が経過しているため、上記は不十分、不正確、または偶然である可能性があります。

6
Surge

次の提案が機能するかどうかはわかりませんが、試してみる価値はあります。

  1. 単純なpdf2psユーティリティを使用してPDFをPostScriptに変換します
  2. 再定義された/setrgbcolor PostScript演算子を使用しながら、そのPostScriptをPDFに変換し直す

これらはコマンドです:

最初

  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
3
Kurt Pfeifle

これはゴーストスクリプトではありませんが、imagemagickではこれは非常に簡単です。

 convert -monochrome input.pdf output.pdf
3
o-town

グレースケールPDFの場合:

GhostScriptを使用する

IN PHPコード、このスクリプトを使用

exec("'gs' '-sOutputFile=outputfilename.pdf' '-sDEVICE=pdfwrite' '-sColorConversionStrategy=Gray' '-dProcessColorModel=/DeviceGray' '-dCompatibilityLevel=1.4'  'inputfilename.pdf'",$output);

便利なURL
http://www.linuxjournal.com/content/tech-tip-using-ghostscript-convert-and-combine-files

2
Tarun Kumar

これはうまくいくようです:

1)gsを使用してファイルをモノクロに変換します

gs -sDEVICE=psmono \
  -dNOPAUSE -dBATCH -dSAFER \
  -sOutputFile=combined.ps \
  first.pdf \
  second.ps \
  third.eps [...]

3)PostscriptファイルをPDF with ps2pdfまたはgs

(クレジット: http://www.linuxjournal.com/content/tech-tip-using-ghostscript-convert-and-combine-files

1
Ed L

純粋な白黒PDFの場合、ps形式に変換してから、PDF postscriptに変換する必要があります。

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");
0
Tarun Kumar