我正在尝试使用 C# 打印到点阵打印机(各种型号),目前我正在使用 Win32 API(您可以在网上找到很多示例)调用以通过我的 C# 将转义码直接发送到打印机应用。这很好用,但是......
我的问题是因为我正在生成转义码而不依赖于 Windows 打印系统,打印输出无法发送到任何“普通”打印机或 PDF 打印驱动程序之类的东西。 (这现在导致了一个问题,因为我们正在尝试使用 Easy Print [基于 XPS] 在 2008 终端服务器上使用该应用程序)
问题是: 如何在不使用直接打印、转义码等的情况下,使用 C# 将格式化文档(预印文具上的发票)打印到点阵打印机(爱普生、Oki 和松下……各种型号)。
** 澄清一下,我正在尝试 GDI+(System.Drawing.Printing)之类的东西,但问题是它很难像旧代码那样排列起来。 (旧代码绕过 Windows 驱动程序将字符直接发送到打印机。)有什么可以改进的建议,以便他们可以使用 GDI+,但仍然像旧代码那样排队?
最佳答案
您可能应该使用报告工具来制作模板,使您或用户能够根据预打印信纸正确定位字段。
使用点阵打印机,您基本上必须在两种模式中的任何一种下工作:
- 行/列文本的简单打字机模式,您可以在其中发送转义序列来管理打印机硬件中包含的少量字体,并且必须管理换行等。
- 页面经过光栅化后的图形输出,打印机驱动程序仅驱动打印头和引脚输出点。
第一种用法在 Windows 下大多被弃用,因为它没有提供太多控制输出的方式,并且每台打印机都有自己的特性,软件变得笨拙且难以预测和定位页面上的东西(没有所见即所得)。
第二个只是使用图形页面范例,使定位文本和图形独立于打印机的实际功能。
使用预印文具时,您的任务是将数据正确放置在页面上。
手动执行此操作非常耗费资源,当然不建议在代码中创建布局,因为如果您的打印机、页面格式或打印的文具发生变化,您将不得不更改代码。
最好的方法是只使用 .Net 提供的标准打印模型和一个报告工具,该工具允许您定义模型和模板,将放置正确的文本和图形,然后从代码中驱动它。
Visual Studio 附带了一个版本的 Crystal Reports,但还有其他更好的报告系统(例如,我使用 developer express 中的那个),其中一些甚至是 free .
关于c# - C# 中的点阵打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/246233/