窗口 – 如何将数据发送到现代打印机? PDF,PostScript,HPGL等

前端之家收集整理的这篇文章主要介绍了窗口 – 如何将数据发送到现代打印机? PDF,PostScript,HPGL等前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在努力了解我通过打印机以编程方式与应用程序软件打印的选项.换句话说,当用户告诉我们的应用程序想要打印某些东西时会发生什么.我明白了“旧时代”的工作方式,并且试图了解更加复杂的现代世界.

在过去,有两种主要类型的打印机:惠普打印机,了解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%的计算设备将被超级移动…

>短读:IPP Everywhere FAQ

猜你在找的Windows相关文章