2017-02-23 13 views
0

私は(下記添付test.pdfという、)PDFファイルを変換しよう(RGBまたはCMYません):間違ったグレーレベルの階調の結果とのGhostscriptのpdfwrite

gswin64c.exe -sDEVICE=pdfwrite -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -dOverrideICC -dUseCIEColor -o gray.pdf -f test.pdf 

結果は確かにのみグレー色を使用する:

>gswin64c.exe -o - -sDEVICE=inkcov gray.pdf 
GPL Ghostscript 9.20 (2016-09-26) 
Copyright (C) 2016 Artifex Software, Inc. All rights reserved. 
This software comes with NO WARRANTY: see the file PUBLIC for details. 
Processing pages 1 through 1. 
Page 1 
0.00000 0.00000 0.00000 0.92673 CMYK OK 

(私は...そうでなければCMY値は> 0であり、これは私はまだ解決haventは別の問題である、-dUseCIEColorを使用する必要があります)

My p問題:結果として得られるgray.pdfは、元のtest.pdfとはかなり異なるグレイレベルを使用します(PDFビューアで開き、自分で比較します)。

誰かが間違いを見ているのですか、RGBカラースペースではなくグレースケールで同じPDFを取得するにはどうしたらよいですか?

ありがとうございました!

test.pdfという:https://drive.google.com/open?id=0BzjatAIrG6P3S2F5Vng4cUhUS0U

gray.pdf:https://drive.google.com/open?id=0BzjatAIrG6P3cEtTY3JaaTJCS2c

+0

-dUseCIEColorを使用しないでください。間違った答えが間違いなく生成される2段階のプロセスに着手しています。 – KenS

答えて

0

あなたは、複数の変換をやって、そしてすべての色空間変換を管理していません。

最初に、元の色をCIEベースの色空間に変換します(また、元の空間内のコンポーネントの数によって空間が異なります)。カラーレンディングディクショナリを指定しないので、これは制御されない変換です。デフォルトを使用しています。

次に、CIEBasedからの別の変換に着手します(通常はPDFで表現できないので、は常にになります)、DeviceGrayに変換されます。ここでも、この変換にICCプロファイルを指定していないので、デフォルトのICCプロファイルを使用しています。

-dUseCIEColorの使用を強くお勧めする場合は、これを制御するのは難しいですが、デバイス空間からCIE空間への変換を制御するColorRendering Dictionariesと、ICCプロファイルを制御する必要がありますその後のCIE空間からDeviceGrayへの変換。

しかし、Ghostscriptのように-dUseCIEColorを使用しない方が良い結果が得られると強く思っています。

+0

ありがとう、KenS! 私はICCプロファイルでさまざまなことを試みましたが、私自身のものも作成しましたが、本当に成功しませんでした。私の知識は限られています。だから、やや濃いグレーのままです。 –

0

ソースファイルに基づいて必要なものだけを推測できます。 DeviceRGB 0.5/0.5/0.5の塗りつぶしの四角形があります。あなたはそれが0.5 DeviceGrayになりたいと思っています。

以下の解決策および推測は、それと同様のケースでのみ有効です。 (例えば、"CMY値"は何ですか、つまり、DeviceCMYKまたはICC-basedなどがファイルに存在するかどうかはわかりません)。デバイスカラースペース(PDF参照を参照)を変換する簡単な公式がありますが、そのうちの1つは実際にDeviceRGBの等しい値からDeviceGrayの同じ値にマップします。スイッチ-dUseFastColor

"C:\Program Files\gs\gs9.10\bin\gswin32c.exe" -sDEVICE=pdfwrite -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -dUseFastColor -o test_1.pdf -f test.pdf 

注:それを動作させるために、GhostScript9.10を使用しています。あなたは "正しい" 0を得るでしょう。5グレースケールの塗りつぶし矩形。 -dPDFUseOldCMS

それはバージョン9.10で動作するように... 9.20(両方を除く)は、私は別のスイッチを追加する必要がありました。再び、結果として0.5グレースケールの塗りつぶし矩形が表示されます。

最後のスイッチ名が示しているように、単純なものは廃止されたと考えられ、9.20で廃止されたようです。

代わりに、新しい素晴らしいCMSエンジンが導入されました(9.10以降)。ただし、上位デバイス(pdfwriteが含まれています)では機能しません。多くのリリースで、スイッチが切られているか壊れています。

私はDeviceCMYKまたはDeviceGray出力(またはICCベースの出力のいずれかのために、それが実際に-sOutputICCProfileオプションを使用するために、ソースおよびコマンドラインオプションでは、デバイスにまたはICCベースの色の組み合わせのために動作させることができませんでした、 なんでも)。生成されるファイル内の同じ色の値。

誰かが私が間違っていると指摘し、の逆の例を示してくれたらと思います。

は、それは(一部 - デバイスのソース色のみのために)実際に、働いていた、 9.10に:

"C:\Program Files\gs\gs9.10\bin\gswin32c.exe" -sDEVICE=pdfwrite -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -sOutputICCProfile=sgray.icc -o test_2.pdf -f test.pdf 

異なる(と正しい、それが見えます)で出力を別のICCプロファイルの結果を使用します。同じRGB値から同じグレー値に変換するには、同じガンマ(デフォルト値)のsRGBのグレースケールプロファイルが必要です。ちょうど、無料のICC Profile Inspectorを使用してsRGBから曲線を抽出し、それを例えばsgray.iccGhostscriptと一緒に配布されます)。

上記の「単純な式」とは対照的に、プロファイルを使用してRGBをグレイに変換し、ガンマを保存する利点は、その努力に値するかもしれません。あなたのファイルと目的を確認してください。