我正在尝试理解我的选项,以编程方式与打印机进行通信,以便从应用软件中打印一些内容。换句话说,当用户告诉我的应用程序他们想打印什么时会发生什么。我理解它在“旧时代”中的运作方式,并试图理解更为复杂的现代世界。
在过去,有两种主要类型的打印机:能够理解HPGL的HP打印机和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代码,请将它传递给打印机打印”?
发布于 2015-01-15 16:28:45
例如,在Postscript中,你可以做一个循环,说“打印这个圆圈50,000次”,移动它的确切位置。在PDF中,我的理解是,你不能这样做,你必须把每个圆圈指定为一个单独的“对象”。
事实上,在你所描述的两个极端之间,真相更倾向于中间地带。
CTM
的图形状态、当前的转换矩阵)来不同地设置它的属性(颜色、缩放、旋转)。关于你的其他几点:
在Windows中,我知道打印的“标准”方法,即查询设备功能并请求设备上下文,然后您可以使用Windows对该控件的调用绘制线条、形状和文本。
不要假设“设备上下文”一词确实意味着Windows与打印机硬件直接对话,以便查询功能并请求设备上下文。有时是,有时不是。它总是依赖一些称为“打印机驱动程序”的软件(它还控制要打印数据的打印机语言应该转换成哪种打印机语言)。打印机驱动程序可以查询设备并询问“您有双工器单元吗?您有订书机吗?”然后为作业生成所需的设备上下文本身。
只有一种非常现代的方法,由“IPP无处不在”开发出来的https://www.pwg.org/index.html,才能摆脱老型号打印机驱动程序所必须做的大部分事情,并且在“无人驾驶”完成传递给物理设备的准确打印数据之前,它将开始主要依靠对设备的直接询问。
但是IPP在任何地方都没有得到广泛的欢迎,无论是供应商还是管理员,还是用户。但是,一旦个人电脑被遗忘,95%的计算设备将是超级移动的.
发布于 2016-01-20 19:14:25
我认为pdf是编译后的脚本,基本上是相同的东西,如果不是同样的东西,只有一个被编译成二进制blobs,另一个是ascii。
不,并不是所有的打印机都会说postscript,谢天谢地,当你可以让它在你的电脑上免费运行,并且使用更少的资源和打印速度更快的时候,他们往往会收取额外的费用。(或者用廉价的假脱机机)
PCL在非HP打印机和惠普打印机上都很常见。但没有一个普遍的答案。您仍然必须逐台打印机,看看哪个打印机支持和/或购买了什么作为添加它,然后从该列表中,管理员已经启用了它。当然,所有语言的版本都会说。
这就是杯子的意义所在。一种抽象化和隐藏细节的方法。
发布于 2015-01-15 14:14:25
在Windows环境中,常见的格式是WMF。Windows Meta文件。WMF是向量和位映射的结合。
WMF格式由MS制作,用于与Windows一起恢复映像。WMF文件包含重建图像所需的所有内容,因此它们可以转换为任何其他图形格式。
打印机制造商通常创建自己的打印机命令集。他们可以选择采用事实上的标准,并与专利/版权持有人达成协议。
如果您制造Postscript打印机,您的潜水员将WMF转换为Postscript。
Windows应用程序通过Windows GDI API创建元数据( WMF ),由打印机制造商编写的Windows驱动程序将WMF转换为自己的打印机命令。
一年前(2014年5月15日),微软将WMF规范发布到了公共领域:Windows元文件格式PDF
当您有“原始”(如Postscript,HPGL)数据,将正确解释打印机,您必须绕过制造商驱动程序。
要绕过打印机的驱动程序,只使用泛型/文本驱动程序。
这消除了驱动程序从图片,然后你可以发送“原始数据”。
然后,您必须发送由驱动程序生成的所有代码,这些代码的目的是使您的工作更容易。
https://stackoverflow.com/questions/27973897
复制相似问题