postscript开始使用postscript


备注

PostScript是一种反向抛光,基于堆栈,动态类型,动态命名空间的脚本语言,具有内置基元,用于从矢量描述生成渲染图像。 PostScript使用与PDF文件格式相同的“Adobe Image Model”。

PostScript被许多程序用作输出格式,因为它被设计为易于机器生成。

与LISP一样,PostScript是同色的 ,代码和数据共享相同的表示。程序可以将过程作为数据和产生过程作为结果,也可以用于连接编程中的技术。

课程

按顺序阅读文档以轻松学习postscript:

  1. Paul Bourke的优秀教程: http//paulbourke.net/dataformats/postscript/

  2. 蓝皮书,上半部分,原始官方教程:
    http://www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF

  3. 绿皮书,如何有效地使用postscript:
    http://www-cdf.fnal.gov/offline/PostScript/GREENBK.PDF

  4. 在Postscript中思考,'nuff说: http ://wwwcdf.pd.infn.it/localdoc/tips.pdf

  5. 数学插图 。从小做起,建立大。 Bezier曲线背后的数学。霍奇曼 - 萨瑟兰多边形裁剪算法。仿射变换和路径的非线性变换。 3D绘图和Gouraud阴影。从前言:

其中[帮助人们制作数学图形的众多工具]中的哪一个选择显然需要在简单性和质量之间进行权衡,其中大多数都采用他们认为简单的方式。事实上,权衡是不必要的 - 一旦投入了大量的初期投入,到目前为止,在大多数情况下最好的办法是用图形编程语言PostScript编写程序。 PostScript程序的输出质量几乎没有限制,并且随着获得经验,使用该语言的困难迅速减少。通过PostScript编程生成简单图形所涉及的明显复杂性,正如我希望本书将展示的那样,在很大程度上是一种错觉。生产更复杂图像所涉及的工作量通常不会超过必要的数量。

PostScript的一般描述

PostScript是图灵完备的通用编程语言,由Adobe Systems设计和开发。许多在PostScript中蓬勃发展的想法都是在Xerox和Evans&Sutherland的项目中培养出来的。

它的主要实际应用历史上是作为页面描述语言 ,或者在其单页EPS形式中是矢量图形图像描述语言。它是动态类型的,动态范围的,基于堆栈的,这导致了大多数反向波兰语法。

PostScript有三个主要版本。

  1. PostScript Level 1 - 它于1984年作为Apple LaserWriter激光打印机的常驻操作系统发布到市场,开创了Desktop Publishing Era。
  2. PostScript Level 2 - 于1991年发布,其中包含对Level 1的几项重要改进,包括支持图像解压缩,in-RIP分离,自动增长词典,垃圾收集,命名资源,PostScript程序流本身的二进制编码。
  3. PostScript 3 - 最新的,也许是最广泛采用的版本是在1997年发布的。它还包含一些2级以上的导入改进,例如Smooth Shading。 “水平”一词已被删除。

虽然PostScript通常用作页面描述语言 - 因此在许多打印机中实现以生成光栅图像 - 但它也可用于其他目的。作为一个快速反向抛光计算器,具有比bc 更难忘的操作员名称。作为另一个程序(通常是其他语言)生成的输出格式。

虽然PostScript文件通常是7位干净的ASCII,但是存在2级标准中描述的几种二进制编码。并且可编程,程序可以为其自身实现其自己的任意复杂编码方案。有一个国际混淆的Postscript比赛,比C比赛活跃一些。

在线参考

常见问题解答

图书

  • Postscript语言参考手册,1ed,1985。推荐使用摘要页面中的小尺寸和简单的操作员索引(在以后的版本中缺失)。

  • 真实世界后记。各种作者关于各种主题的章节,包括半色调的优秀报道。

Hello World示例

选择字体和字体大小,选择位置, show 字符串。

%!PS
/Palatino-Roman 20 selectfont
300 400 moveto
(Hello, World!) show
showpage
 

笔记和常见陷阱:

  • 未能设置字体(导致无文本或默认(丑陋)字体)

  • 使用findfontsetfont 但忘记在scalefont 之间使用findfont 。使用level-2 selectfont 避免了这个问题,并且更简洁。

  • 无法使用moveto 设置点,或者在页面外设置点。对于美国信纸,8.5x11是792x612 ps点。所以它很容易记住大约800x600(但更短和更宽的微笑)。所以300 400 大致是页面的中心(高一点,小左)。

  • showpage 了打电话给showpage 。如果您使用gs 预览ps程序并且它不会在showpage 结束, gs 可能会为您显示图像。然而,当您尝试转换为pdf或其他内容时,该文件将神秘地无法生成任何输出。

安装或设置

真正的Adobe PostScript解释器可用于高端打印机,Display PostScript(DPS)产品和Acrobat Distiller产品。作为标准的作者,这些产品被认为是“标准实现”,用于描述PostScript实现之间的差异。

PLRM中定义的解释器的标准接口是程序流 ,可以是文本或二进制,具体取决于底层通道或OS /控制器的详细信息。 Acrobat Distiller有一个GUI前端,用于选择输入postscript程序并将其输出呈现为pdf。 Distiller对使用输出文本流报告错误和其他程序输出也有一些有限的支持。 GSView为使用Ghostscript作为解释器的类似工作流程提供了类似的GUI前端。

Ghostscript和Xpost都在命令行模式下工作。要运行的postscript程序文件可以在命令行( gs program.psxpost program.ps )中xpost program.ps ,它将打开一个图形窗口以显示图形输出。选项可用于将图形渲染到其他地方,如磁盘文件或完全抑制图形,并使用postscript作为文本脚本语言。

每个解释器都有自己的安装和设置说明,在这里重现它们将是浪费(并且容易过时)。

免费提供的PostScript解释器

  • Ghostscript适用于所有主要平台和Linux发行版,源代码或二进制形式,GNU许可证或与作者Artifex软件的其他许可协议。 Ghostscript实现了完整的PostScript 3标准。

  • 根据BSD-3条款许可, Xpost以源代码形式提供给所有主要平台。它实现了Level-1标准,包含一些Level-2扩展和一些DPS扩展。

函数的本地命名空间

Postscript是动态命名空间或LISP 1语言。但它提供了在程序中实现局部变量的工具以及实现算法所需的其他效果。

对于过程中的本地名称,请在开头创建一个新字典并在结尾处弹出它。

/myproc {
    10 dict begin
    %... useful code ...
    end
 } def
 

您还可以将此与快捷方式结合使用,将函数的参数定义为变量。

% a b c  myproc  result
/myproc {
    10 dict begin
    {/c /b /a} {exch def} forall
    %... useful code yielding result ...
    end
 } def
 

如果您需要在本地词典位于顶部时更新*“global”*变量,请使用store 而不是def