2017-08-06 9 views
0

私は、.epsファイルの読み込み、編集、保存を可能にするソリューションを探していました。私はゴーストスクリプトがこの機会をすべて与えることができることを知りました。私が必要とするアルゴリズムは簡単です:複数の.epsファイルを読み込み、1つの大きなファイルに連結し、新しい.epsファイルを保存します。私はすでにそれを行うことができますが、問題が発生します:新しい生成され保存されたファイルはグラデーションを保持しません。グラデーションはラスタライズされ、そのグラデーションを使用するシェイプはクリッピングマスクに変換されます。ゴーストスクリプトにepsのグラデーションをラスタライズしないように指示する方法はありますか?epsファイルのグラデーションをラスタライズしないようにghostscriptに指示するにはどうすればよいですか?

私のWindowsは64ビットですが、最新の32ビットバージョンのghostscriptライブラリを使用しています(64ビット版のghostscriptで問題を解決していました)。実際はそれほど重要ではありませんが、私はC#とGhostscript.Netを使って書いています。

これはサンプルコードです:

using (GhostscriptProcessor processor = new GhostscriptProcessor(lastInstalledVersion, true)) 
{ 
    List<string> switches = new List<string>(); 
    switches.Add("-o"); 
    switches.Add(@"-sOutputFile=" + outputFile); 
    switches.Add("-sDEVICE=eps2write"); 
    switches.Add("-dUseCIEColor=true"); 
    switches.Add("-c"); 
    switches.Add("<</Install {0.5 0.5 scale}>> setpagedevice"); 
    switches.Add("-f"); 
    switches.Add(inputFile); 

    processor.Process(switches.ToArray()); 
} 

答えて

0

あなたが求めている質問への答えは簡単です。できません。 eps2writeデバイスは、理由のために呼び出され、レベル2のPostScriptのみを生成し、shfill演算子、またはタイプ2のパターン(PDFのシェーディングディクショナリ)はレベル3のPostScriptプリミティブです。

しかし、とにかくGhostscriptで終了ファイルを実行する正当な理由はないようです。すでに多くのEPSファイルがあるとします。 EPSファイルの全体のポイントは、それらを 'ブラックボックス'として扱うことができるということです。それらを連結して並べ替えるために、それらの内容を知る必要はありません。

あなたはすべて、 'EPSファイル全体を含める前にCTMを変更するPostScript。 EPSファイルには、ユーザスペースにどこに座っているのかを示す%% BoundingBoxコメントがあるため、拡大縮小する引数はどのようなものにする必要があります。スケールを変更し、translateを使用して0,0の原点(左下)をオフセットするだけです。

eps2writeデバイスは、レベル2 PostScriptを作成することに限定されているため、元のレベル2仕様(CIDFontsなど)を超えるPostScriptのその他の機能もサポートしていないことに注意してください。

+0

うわー!便利な答えをありがとう!あなたが言ったように私はやろうとします。 – Rustam

関連する問題