我一直在为餐馆/酒吧 Build 一个POS应用程序 .
设计部分已经完成,过去一个月我一直在编码 .
一切正常,但现在我需要打印 . 我必须打印到连接到运行该软件的计算机的收据打印机,然后我将尝试在像厨房一样的远程打印机中打印 .
我've searched for help in the matter only to find that the standard for printing in these types of printers is using POS for .NET. The thing is, this is now a bit outdated or at least it hasn'几年后有任何更新 . 有's a lot of questions being asked on how to use this library and most of the answers aren'很容易遵循 . 因此,如果有人可以在收据打印机上像一个简单的短语("Hello World")那样一步一步地帮助打印,我将非常感激 .
我'm using visual studio 2012 running on a 64 bit windows 7 and i'm在c#中编写WPF .
4 回答
POS for .NET可能是要走的路 .
大多数收据打印机制造商将提供OPOS服务对象 .
并且as this MSDN article states,POS for .NET与OPOS v1.8服务对象兼容 .
OPOS / UPOS(基于.NET的POS)是恕我直言,设计不佳的API(由设备制造商而不是应用程序开发人员设计),但它是您今天拥有的最好的 .
我没有任何具体的样本,但基本知识与OPOS相同 - 您需要打开,声明,启用设备,然后您可以调用其方法(如打印) . 您可以尝试查看OPOS示例,例如this PosPrinter1 sample,这可能与POS for .NET非常相似 .
This blog有一些关于为.NET设置POS的信息可能会有所帮助 .
UPDATE
这是一个用于OPOS打印机的VB Hello World . 首先需要创建一台打印机,并使用所需的逻辑设备名称= LDN将其添加到注册表中 . 我相信Epson ADK包含一个在注册表中添加打印机的实用程序 . 此实用程序还可以对打印机执行运行状况检查,以检查它是否已正确安装 . 一旦你完成了这个,它应该很容易使下面的代码适应.NET for .NET
我知道这是一个老帖子,但对于那些仍在寻找解决方案的人,我可以告诉你我做了什么 .
花了好几个小时搞乱了.Net的OPOS和POS后,我最后放弃了那些只是使用内置的
System.Drawing.Printing
库 . .Net的OPOS和POS最终成为一种痛苦的工作,并最终没有内置库那么好用 .我正在使用Epson TM-T20II收据打印机 .
这里有一些适合我的代码 .
希望它有助于有人跳过所有与自定义驱动程序的混乱 . :)
.NET Printing
在.NET下打印并不太难 . 看看here和msdn .
打印到POS /收据打印机与打印到任何其他打印机相同,假设它是Windows打印机,网络或其他 . 如果您使用的是串行打印机,事情可能会有点困难,因为您可能更需要使用制造商特定的API,幸运的是,目前大多数优秀的POS打印机都得到操作系统的全面支持 .
首先,您需要在项目中添加对
System.Printing
dll的引用 .然后打印就像
使用..
您还可以利用PrintDialog.PrintVisual并使用xaml模板定义文档 .
可以使用PrintDialog属性设置打印设置 .
获取要打印的打印机
要记住打印到收据打印机时要记住的一些事项,您需要考虑格式化 . 更具体地说,您需要考虑页面的宽度以及每行可以容纳的字符数;对我来说这是一个很多的试验和错误,特别是对于不同的字体大小 .
在大多数情况下,您并不需要担心分页,打印机会在完成文档后自动剪切纸张 .
如果要以打印机的全速打印,则可能需要使用特定于打印机的转义码,并生成“原始”输出 .
看看Michael Buen对this SO question的回答,特别是UPDATE位 .