在过去,有两种主要类型的打印机:惠普打印机,了解HPGL和Postscript打印机.所以,您可以使用这两种语言发送打印机,打印机会将您的代码转换为页面上的点.您也可以将位图作为二进制数据嵌入.例如,在HPGL(或PCL)中,您可以给出一个基本上说“请打印此位图,这里是栅格数据”的命令,后跟一个巨大的二进制数据.显然,如果你这样做,打印机的数据量会更多,可能会阻塞打印机.后记具有相同的能力.如果您打印文本,可以告诉打印机在“TimesNewRoman”(或任何)字体中打印文本“xyz”,打印机将为您计算所有点(这意味着打印机必须知道该字体,或者您必须下载字体到打印机提前).
现在,据了解,PDF格式与Postscript类似,但它不是像Postscript那样的语言,只能包含“对象”.所以,例如,在Postscript中,你可以循环并说出“打印这个圈子50,000次”,移动它的确切位置.在PDF中,我的理解是你不能这样做,你必须将每个圈子指定为一个单独的“对象”.
那么现代打印机怎么工作?还可以将HPGL / PCL发送到打印机吗?现在所有打印机现在都在Postscript上标准化了吗?如果是这样,这是否意味着我最好的选择是生成Postscript,然后将其发送到打印机?如果我发送Postscript,我必须以某种方式告诉打印机这是Postscript吗?
在Windows中,我知道打印的“标准”方式,即查询设备功能并请求设备上下文,然后可以在该上下文中使用Windows调用绘制线条,形状和文本.然而,与Postscript(或HPGL / PCL)相比,显然这是非常原始的.有没有办法可以直接与打印机驱动程序通信,或者告诉Windows:“这里是我的Postscript代码,请将其传递到打印机进行打印”?
‘So,for example,in Postscript you can make a loop and say “print this circle 50,000 times”,moving its exact location around. In PDF my understanding is that you can’t do this,you have to specify each and every circle as a separate “object”.’
实际上,真相在你所描述的两个极端之间的中间位置有点多.
>这是真的:与PostScript不同,PDF不是一种编程语言(更不用说一个图灵完整的),你不能定义“循环”.
>而且,您也不需要分别指定每个圈子(或嵌入图像或其他图形对象).您可以很好地定义如何绘制一个圆圈(或图像,或其他)一次,然后在页面的其他位置或PDF文档中重新使用该定义.这被称为“引用对象”.当您重新使用对象时,您可以通过更改当前的“环境”定义(例如包括CTM的图形状态,当前的转换矩阵)来设置不同的属性(颜色,缩放,旋转).
关于你的其他几点:
>不,从来没有两种类型的打印机,HPGL和PostScript.
>即使在过去的日子里,也有十几个不同的“打印机语言”. PCL比HPGL更受欢迎.不要忘记不同打印机语言的所有专有发明.曾经听说过AFP,高级功能印刷?这种语言打印出来 – 仍然打印! – 比PostScript更多的纸张.它不再是专有的,但是它是由IBM发明的主机打印laaaarge运行的可变数据,主要用于计费….听说过ESC / P? KPDL? XPS?
>是的,您仍然可以将HPGL发送到打印机,但不能将其发送给每台打印机.打印机始终被赋予至少一种能够生成和发送的语言的权力.
>是的,现在有打印机型号可以直接使用PDF.但它们仍然不是主要的类型.他们中的一些“欺骗”,仍然作为主要的内置翻译器PostScript引擎:这些引用了PDF,并将其静默地转换为PostScript.其他人可以处理PDF,而不会后退到PostScript.
‘In Windows,I know the “standard” way to print,which is to query device capabilities and request a device context,then you can draw lines,shapes and text using Windows calls on that context.’
不要以为“设备上下文”这个术语意味着Windows直接与打印机硬件通话,以便查询功能并请求设备上下文.有时候它有时候会有的.它总是依赖于一些称为“打印机驱动程序”的软件(也可以控制哪种打印机语言打印数据应该被转换).打印机驱动程序可能能够查询设备,并询问“您有双工器单元吗?您有装订设备吗?”然后为作业生成所需的设备上下文本身.
IPP Everywhere开发的非常现代化的方法IPP Everywhere将能够摆脱老式打印机驱动程序所要做的大部分工作,并将主要依靠直接询问设备,无限制地“完成要传递到物理设备的确切打印数据.
但IPP Everywhere尚未广泛流行,与供应商,管理员以及用户无关.但是,一旦PC被遗忘,95%的计算设备将被超级移动…