1
stream
{ 360 mul sin
2 div
exch 360 mul sin
2 div
add
}
endstream

誰かが私にこの構文を説明してもらえますか?

4

2 に答える 2

2

これは私には PDF のようには見えません。

  • streamはい、endstreamPDFキーワードです。

  • しかし、残りは PostScript のように見えます。

したがってstreamendstream同じコード内の別の場所 (前) で定義された PostScript 変数または関数である可能性もあります...


PostScript として、コードは次のことを意味します。

  • {}コードをブロックに構造化する単なるセパレーターです
  • 360 mul sin: 360 を掛けて (何を掛けるか=> スタックの一番上にある値)、結果の正弦値を計算し、これをスタックの一番上に置きます。
  • 2 div: スタックの一番上の値を 2 で割ります。
  • exch 360 mul sin: スタックの一番上にある 2 つのアイテムを交換し、現在一番上にあるアイテムに 360 を掛けて、その正弦を計算し、スタックに戻します。
  • 2 div: スタックの一番上の値を 2 で割ります。
  • add: スタックの一番上の 2 つの値を追加します。

アップデート:

痛い!

PDF仕様がPDFドキュメント内で許可する(非常に限定された)PostScript関数オブジェクトの詳細を完全に忘れていました。これらは自己完結型の静的な数値変換を表します。

したがって、電卓関数としての PostScript コードに関する上記の説明は依然として有効であり、ハーフトーン スクリーンの「スポット関数」を説明しているように見えます。(ただし、streamこのendstreamコンテキストではもちろん、PDF キーワードとしての元の意味を保持し、中括弧{と関数定義を囲む必要}があります。)

これらの PostScript 関数オブジェクトの PDF 仕様では、配列変数名前、または文字列の使用が許可されておらず、値としての整数実数、およびブール値のみが許可されているため、これらのコード セグメントの処理には本格的な PostScript インタープリターは必要ありません。仕様のこのステートメント:

「PDF はプログラミング言語ではなく、PDF ファイルはプログラムではありません。」

は引き続き適用され、PDF 言語は PostScript (プログラミング言語であり、PS ファイルプログラムです) とは大きく異なります。

PostScript はスタックベースの言語であり、 「逆ポーランド記法」の規則を使用するポケット電卓を考えてそのコードを理解すると、このトピックを理解するのに役立ちます...

于 2012-09-25T12:47:08.247 に答える
2

生データを実行して最終値を提供するポストスクリプト プログラムです。それを処理するには Postscript パーサーが必要です

于 2012-09-25T13:41:35.190 に答える