2016-11-20 7 views
0

私の仕事は、複数の小さなEPSファイルを1つの大きなEPSに結合することです。複数のEPSファイルを1つの大きなepsファイルに連結するGhostscript

GUIツールを使用して手動で調整するのではなく、プログラムで実行できることを期待していました。

私はghostscriptコマンドを試しましたが、それらの小さなepsがお互いに重なってしまいました。

私もpsutils(psnup/pstops)を見ていますが、それが私に役立つかどうかは分かりません。

より重いプログラム/ libをGhost4jのように使用しても構いません(私の必要性をサポートしていない場合は、そこにもっと多くの機能を追加する必要があります)。私はちょうどこれがライトウェイトや既存のツールではできないことを確認したい。

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

答えて

2

EPSファイルがであると考えていますか?を使用すると思いますか? EPSファイルのポイントは、アプリケーションによって「ブラックボックス」として使用されることを意図していることです。

アプリケーションがPostScriptプログラムを作成するとき、最終出力にEPSのサイズ以外のことを知らずにEPSを含めることができます。そのため、PostScriptが生成されると、アプリケーションはEPSのサイズを認識し、必要に応じて内容を拡大してページに配置するようにCTMを変更します。

複数のEPSファイルを使用する場合は、同じようにする必要があります。必要なページのサイズと位置に配置されるように、各EPSファイル間のCTMを変更する必要があります。あなたがこれをしないと、それらはすべて現在の位置に終わり、ページ上で拡大縮小します。あなたが言うように、彼らはお互いの上に終わる。

は今、EPSファイルの全体のポイントは、あなたがあなたはEPSのバウンディングボックスを解析する必要が

まず:-)それを行うためのプログラムを記述する必要がありプログラム的に配置することができますが、ということですファイル。 EPSが正しく適合している場合、これは%% BoundingBoxとオプションで%% HiResBondingBoxのコメントになります。

この情報を利用して、使用しているメディアのサイズや、希望のメディアに合わせてEPSファイルを拡大/縮小する方法を決定する必要があります。

次に、特定のメディアサイズを要求することから始まる新しいPostScirptプログラムを開始し、scaletranslate演算子を使用してメディア上の正しい位置に移動し、最初のEPSファイルを実行しますコンテンツ、またはrun演算子を使用して)。

各EPSファイルに対してこの手順を繰り返します。

は最後に、結果のファイルがスケーリングとして置かれ、個々のEPSファイルの内容を具現新しいEPSファイルになりますあなたはGhostscriptの中eps2writeデバイスを使用していると仮定すると、showpageオペレータ

を使用して新しいコンテンツを書きますあなたは欲しい。

だから例えば(全ての値は架空のデータ例です):

%! 
<< /PageSize [612 792] >> setpagedevice 

gsave 
306 396 moveto 
0.5 0.5 scale 
(example1.eps) run 
grestore 

gsave 
306 0 moveto 
1.5 1.5 scale 
(example2.eps) run 
grestore 

gsave 
0 396 moveto 
(example3.eps) run 
grestore 

gsave 
0 0 moveto 
0.66 0.66 scale 
(example4.eps) run 
grestore 

showpage 
+0

ありがとうございました。私は、epsごとに-cスイッチと一緒にtranslateを使って動作させることができます。 –

関連する問題