stream
{ 360 mul sin
2 div
exch 360 mul sin
2 div
add
}
endstream
誰かが私にこの構文を説明してもらえますか?
これは私には PDF のようには見えません。
stream
はい、endstream
PDFキーワードです。
しかし、残りは PostScript のように見えます。
したがってstream
、endstream
同じコード内の別の場所 (前) で定義された 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 はスタックベースの言語であり、 「逆ポーランド記法」の規則を使用するポケット電卓を考えてそのコードを理解すると、このトピックを理解するのに役立ちます...
生データを実行して最終値を提供するポストスクリプト プログラムです。それを処理するには Postscript パーサーが必要です