1

次のプロセスを自動化する必要があります。

  1. PostScript 入力ファイルのページの一部を切り取ります (例: input.ps、10,10 から 150, 200 まですべてを切り取ります)。

  2. その部分を新しい PostScript ファイルに挿入し、n 度回転します (たとえば、40 度回転し、100,100 の近くに配置します)。

PostScript コマンドまたは GhostScript の特別な機能を使用してこれを行う方法はありますか?

ファイルを PDF に変換し、PDF を変更することもオプションです。

編集1:

PS ベースのソリューションのテスト中に発見した問題のため、私は PDF を使用することを好みます。

これまでの回答は、PDF の「カット」の問題を解決します。ただし、結果を n 度回転させる必要があります。n は 90 の倍数ではありません。

ヒントや方向性をいただければ幸いです。
ありがとう!

4

2 に答える 2

4

問題を PostScript の観点から考えてみてください。「カット」の効果を得るには、クリッピング パスを適用する必要があります。あなたは長方形が欲しいので、それは簡単です:

clipleft clipbottom moveto
0 clipheight rlineto
clipwidth 0 rlineto
0 clipheight neg rlineto
closepath clip

必要なページの開始前にこのコードを挿入すると、その四角形にクリップされます。

回転の効果を得るには、変換行列を適用するか、rotate コマンドを使用します。

degrees rotate

その後のすべての操作に影響します。さて、おそらく、次のようなことをしたいと思うでしょう:

degrees rotate
placementx placementy translate
0 0 moveto
0 clipheight rlineto
clipwidth 0 rlineto
0 clipheight neg rlineto
closepath clip

これにより、軸が回転し、原点が必要な場所に移動し、クリッピング四角形が描画され、それにクリップされます。その後の描画はすべて、以前の変換の影響を受けます。ページをレンダリングするコードが PostScript オペレーター initgraphics (またはページのプロパティをリセットする他のオペレーター) を呼び出さない限り、initgraphics を再定義する以外にできることはあまりありません。実際にはすべきではありません (多くのシステムでは、おそらく禁止されています)。

于 2012-11-21T13:10:19.260 に答える
0

私の専門知識は PostScript よりも PDF の方にありますが、PDF を使用すれば確かに可能です。論理的な手順は次のように要約されます。

1) 最初の PDF を開き、必要な部分だけが表示されるように、このファイルのトリム ボックスを変更します。

2) 2 番目の PDF ファイルを開き、最初の PDF を目的の場所でその上に合成します。

これを PDF で行うと、PDF の方が PostScript よりも操作が安全であるため、より安全になります (ファイルの 1 つに巧妙な PostScript コードが含まれていて、アルゴリズムが無効になる可能性はありません)。

これを行う方法は、作業中のプロジェクトの制約によって大きく異なります。このようなことを行うことができる商用ツールは確かにあります。おそらくGhostScript自体やpdflibのようなものでさえ、役立つオープンソース/無料のツールもあると思います。

于 2012-11-23T23:17:31.350 に答える