PostScript:让DTP飞翔起来


  PostScript是一种程序语言,它在一个页面上描述文本和图象。PostScript的命令控制一台激光打印机(或者任何PostScript设备)把一行文本、一个圆、一条贝塞尔曲线或者一幅位图图象放在它指定的地方。Macromedia FreeHand、QuarkXPress和苹果公司的LaserWriter软件及驱动程序把PostScript命令写到磁盘文件中,再把文件送到打印机上。打印机的解释器把PostScript命令读出后,把它们转化成页面上的标记。


  Adobe公司最初推出了PostScript代码,随后许多其他公司开发了能够读出PostScript代码的解释器。在过去的几年里,Adobe公司先后发布了三种版本的PostScript语言,它们是PostScript、PostScript Leve1 2和PostScript Leve1 3。但是,今天的许多成像设备只能够处理PostScript Leve1 2命令,只有一些时新的成像设备可以处理PostScript Leve1 3命令(包括能够处理Adobe公司自己的Acrobat PDF文件和打印机自动补漏白功能)。从根本上说,为了能够兼容以前的成像设备,采用PostScript Leve1 3的应用程序和驱动程序很少。


  


  一、页面生成的基本概念


  了解PostScript如何生成页面,有助于理解桌面出版应用软件的工作原理,知道输出结果为什么会与预期的结果有差异。PostScript每次描述一个页面的一个对象,可能是一幅图或一些文本。每一个对象压在先前一个对象的上面。例如,在QuarkXPress中创建一个文本框,文本框中有一个实地的白色背景和“照排技术”的字样。当输出的时候,QuarkXPress和LaserWriter驱动程序把上述内容转换成PostScript代码,PostScript文件用白色填充矩形,再把文本放置在上面。如果文本包括字距调整这样的操作,那么PostScript可能每次只放置一个字符。人们通常错误地认为,当一个文本框的背景是空的时候,QuarkXPress页面的输出会花费更多时间。事实上,如果文本框是透明而非是白色的话,唯一的差别是在放置文本之前,PostScript命令不用把文本框填上白色。因此,透明文本框实际输出的速度要快一些。


  PostScript是一种非透明的填充成像模式,意思是无论你放置什么样的页面,那么后面放置的页面将完全盖住它下面的页面。例如,如果你用PostScript在页面中描述一个50%的灰度文本框,再把一个灰度为20%的文本框放置在它的上面,那么你不可能获得70%的灰度文本框,而只能看到20%的灰度文本框。


  当你在QuarkXPress中把一个柔和的阴影放置在某个对象的上面,你是看不到阴影效果的。因为最上面的图象完全遮住了下面的图象。所以,提供透明效果的任何桌面应用软件在输出时不得不采用一种虚拟方法实现透明效果。


  


  二、例子:将图中的白色框去掉


  PostScript实际上是一种很简单的程序语言。你可以用文字编辑器去写或编辑PostScript代码,但不要用Microsoft Word这类文字处理器,因为它有格式化过程。Bare Bones Software公司(http://www.barebones.com/)的BBEdit编辑器效果不错,它还能够让你很快地下载PostScript到打印机上,以便看到结果。


  在这里我们讲一个实际中经常碰上的问题。QuarkXPress4.X版本生成的EPS文件稍微不同于以前版本的QuarkXPress,它总会在页面上的最后层留有一个白色的框,而无法将EPS文件放置在其他图象的上面或让背景是透明的,只有通过编辑PostScript代码来解决这个问题。




图1



  图一是编辑之前的效果。当你在Photoshop(或者是其他的应用软件)中打开或放置一个QuarkXPress4.X的EPS文件时,看到的效果是图象上有一个白色背景框。




图2



  图二是编辑之后的效果。通过编辑EPS文件的PostScript代码,你可以除去白色的框而生成一个透明的图象效果。


  编辑步骤如下:


  1.在一个文本编辑器中打开EPS文件,例如BBEdit编辑器。不要用Microsoft Word这类字处理软件,因为这类软件通过增加的格式化处理会把文本搞得一团糟。


  2.打开之后,找到“%% E-ndsetup”一行,你会马上看到有这样的一行“gnp clippath 1 H V G calcbnd”。


  3.“g,np,H,”等命令是在文件中早已定义的全部过程。把字符“1 H V”删除之后,将文件存盘。这三个字符的作用是生成白色框,“1”代表白色,如果你想把“1”变成0的话,框就成为黑色。


  如果你把EPS文件放置在其他应用软件中,预览效果不会是透明的,但当你把它输出到PostScript打印机或其他的成像设备时,所希望的透明效果就出来了。


  


  三、解释中出现的错误


  PostScript是一种非常敏感的语言,即使是一个很小的错误,也会在页面上产生严重的后果。例如,“Lineto”命令是从一个页面配合另一个页面画一条直线。如果计算机在写PostScript代码的时候出现了错误,那么计算机可能会把这个命令写成“Lneto”,由于解释器无法知道“Lneto”命令的意思是什么,相应地会响应“Undefined Command”的错误。在较老式的打印机上,通常出现错误的命令是“Limitcheck”,这是因为超出了内部限制。例如,较老的成像设备无法处理很长的、复杂的贝塞尔曲线,如果你没有把形状做简单化处理,计算机会返回一个"Limitcheck”错误信息。


  在使用QuarkXPress或Adobe Pagemaker应用软件的过程中,为了了解错误的确切意思,可以打开Print对话框的错误处理特性(error-handling feature)一栏。在其他的应用软件中,你可以打开Print对话框的弹出菜单General,选择Error Handling(错误处理)。通过上述这两种打开方法,你就可以得到一页关于错误命令和错误类型的消息。如果是“Undefined Command”的命令错误,那么是因为打印流出现了问题,此时你不妨重新打印输出作业;如果你看到的是"Limitcheck”错误信息,那么你最好把你的页面内容做简化处理。


  


  四、PostScript的未来


  尽管PostScript长期以来是桌面出版的核心技术,但现在的印前正在朝着采用Acrobat PDF作为标准成像语言的方向发展。但是,历史悠久的PostScript语言仍然还有顽强的生命力,这是因为Adobe公司最初是把PDF功能特性设计在PostScript语言基础上的。PostScript语言知识对理解Acrobat PDF如何工作仍然很有帮助。即使到了大多数成像设备能够阅读PDF文件的程度,PDF仍旧需要将文件解释(一般是通过打印机或成像设备的驱动程序)成为PostScript文件。显而易见,PostScript是不会过时的。


   ·责任编辑 张震一·

[时间:2001-09-05  作者:王守鸿  来源:中国印刷]

黄品青微站