stream
{ 360 mul sin
2 div
exch 360 mul sin
2 div
add
}
endstream
有人可以向我解释这个语法吗?
答案 0 :(得分:2)
这对我来说不像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规范不允许使用数组,变量,名称或字符串< / em>,但只有整数, reals 和布尔作为值,这些代码段的处理不需要完全成熟的PostScript解释器,以及规范中的这句话:
“PDF不是编程语言,PDF文件不是程序。”
仍然适用,并且使PDF语言与PostScript(这是编程语言,PS文件是程序)非常不同。
请记住,PostScript是一种基于堆栈的语言,通过考虑使用'reverse Polish notation'约定的袖珍计算器来理解其代码,这将有助于您围绕这一主题进行思考......
答案 1 :(得分:2)
它是一个postscript程序,它对原始数据执行以提供结束值。你需要一个Postscript解析器来处理它