当前位置:  开发笔记 > 编程语言 > 正文

C#中的点阵打印?

如何解决《C#中的点阵打印?》经验,为你挑选了2个好方法。

我正在尝试用C#打印到Dot Matrix打印机(各种型号),目前我正在使用Win32 API(你可以在网上找到很多例子)调用,将转义代码从我的C#应用​​程序直接发送到打印机.这很好用,但......

我的问题是因为我正在生成转义码而不依赖于Windows打印系统,打印输出无法发送到任何"普通"打印机或PDF打印驱动程序等.(这现在导致问题,因为我们尝试使用Easy Print [基于XPS]在2008终端服务器上使用该应用程序]

问题是:我如何使用直接打印,转义码等从C#打印格式化文档(预打印固定的发票)到Dot Matrix打印机(Epson,Oki和Panasonic ...各种型号).

**只是为了澄清,我正在努力的事情像GDI +(System.Drawing.Printing),但问题是,它的很辛苦,得到的东西要排队,如旧代码一样.(旧代码发送的字符直接向打印机绕过Windows的驱动程序.)任何建议的东西如何能加以改进,使他们可以使用GDI +,但仍然排队如旧代码做?



1> Renaud Bompu..:

您应该使用报告工具制作模板,以便您或用户正确定位与预打印信纸相关的字段.

使用点阵打印机,您基本上必须使用以下两种模式之一:

行/列文本的简单类型 - 写入器模式,您可以在其中发送转义序列以管理打印机硬件中包含的少量字体,并且必须管理行返回等.

页面光栅化的图形输出,打印机驱动程序只驱动打印头和引脚输出点.

第一种用法大多是在Windows下不推荐使用,因为它在控制输出方面没有多少提供,并且每台打印机都有自己的特性,软件在页面上预测和定位事物变得难以处理和困难(没有WYSIWYG).

第二种只是使用图形页面范例,使文本和图形的定位与打印机的实际功能无关.
使用预先打印的信纸时,您的工作是在页面上正确定位数据.
手动执行此操作非常耗费资源,当然不建议在代码中创建布局,因为如果打印机,页面格式或打印文具发生变化,您将无法更改代码.

最好的方法是使用.Net提供的标准打印模型和一个报告工具,该工具允许您定义正确定位文本和图形的模型和模板,然后从代码中驱动它.

Visual Studio附带了一个Crystal Reports版本,但还有其他更好的报表系统(例如我使用开发人员快报系统),其中一些甚至是免费的.



2> alexandrul..:

根据我的经验,对同一数据使用两种报告更容易:

使用转义码和其他任何东西的点阵打印机的一份报告是必需的,它保存在文本文件中,然后使用各种方法打印(type file.txt > lpt1或在代码中选择默认打印机并使用NOTEPAD /P file.txt) - 有关更多打印方法,请参阅此页面.

另一份使用报告生成器工具(Crystal Reports,Report Manager,RLIB或其他任何可用的工具)的激光/喷墨打印机报告

由于为正确类型的报告购买合适类型的打印机并不罕见,因此这种方法的优势在于让客户决定:点阵打印机用于A3/A4纸张格式的文本报告(通常用于会计部门)或激光/喷墨打印机,用于图形报告.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有