销售点申请收据打印

本文关键字:打印 销售点 | 更新日期: 2023-09-27 18:08:22

我正在做一个零售管理软件的小项目,它将使用POS打印机(我想这就是我们所说的)。最后我需要为它创建一个账单。但我被困在这里,无法继续。因此,假设我以具有适当尺寸(POS账单的宽度)的单独表单生成账单,我能够正确打印它吗?我使用c#和。net 4.0框架。我对POS设备了解不多。我正在为一个真正的小型本地客户工作,需要一个基本的软件模型。我也是一名新生,所以请帮助我。

如果我的问题不清楚,请让我知道,我会尽量详细说明我的想法。

销售点申请收据打印

我知道这是一个旧的帖子,但是对于那些仍然在寻找解决方案的人,我可以告诉你我所做的。

在花了很多时间摆弄。net的OPOS和POS后,我最终放弃了这些,只使用内置的System.Drawing.Printing库。. net的OPOS和POS工作起来很痛苦,最终没有内置库那么好。

我用的是爱普生TM-T20II收据打印机。

这里有一些代码对我来说工作得很好。

public static void PrintReceiptForTransaction()
    {
        PrintDocument recordDoc = new PrintDocument();
        recordDoc.DocumentName = "Customer Receipt";
        recordDoc.PrintPage += new PrintPageEventHandler(ReceiptPrinter.PrintReceiptPage); // function below
        recordDoc.PrintController = new StandardPrintController(); // hides status dialog popup
        // Comment if debugging 
        PrinterSettings ps = new PrinterSettings();
        ps.PrinterName = "EPSON TM-T20II Receipt";
        recordDoc.PrinterSettings = ps;
        recordDoc.Print();
        // --------------------------------------
        // Uncomment if debugging - shows dialog instead
        //PrintPreviewDialog printPrvDlg = new PrintPreviewDialog();
        //printPrvDlg.Document = recordDoc;
        //printPrvDlg.Width = 1200;
        //printPrvDlg.Height = 800;
        //printPrvDlg.ShowDialog();
        // --------------------------------------
        recordDoc.Dispose();
    }

private static void PrintReceiptPage(object sender, PrintPageEventArgs e)
    {
        float x = 10;
        float y = 5;
        float width = 270.0F; // max width I found through trial and error
        float height = 0F;
        Font drawFontArial12Bold = new Font("Arial", 12, FontStyle.Bold);
        Font drawFontArial10Regular = new Font("Arial", 10, FontStyle.Regular);
        SolidBrush drawBrush = new SolidBrush(Color.Black);
        // Set format of string.
        StringFormat drawFormatCenter = new StringFormat();
        drawFormatCenter.Alignment = StringAlignment.Center;
        StringFormat drawFormatLeft = new StringFormat();
        drawFormatLeft.Alignment = StringAlignment.Near;
        StringFormat drawFormatRight = new StringFormat();
        drawFormatRight.Alignment = StringAlignment.Far;
        // Draw string to screen.
        string text = "Company Name";
        e.Graphics.DrawString(text, drawFontArial12Bold, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
        y += e.Graphics.MeasureString(text, drawFontArial12Bold).Height;
        text = "Address";
        e.Graphics.DrawString(text, drawFontArial10Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
        y += e.Graphics.MeasureString(text, drawFontArial10Regular).Height;
        // ... and so on
 }

希望它能帮助人们跳过所有的混乱与自定义驱动程序。:)

我设计了一个POS应用程序(在Delphi中),尽管打印收据或账单有很多小问题,但这不是火箭科学。我只是简单地打印收据,嗯,像其他打印机一样打印,不同之处在于您发送的行长度为30-38个字符(取决于打印机驱动程序、字体和大小)。首先,你可以使用两种方法打印:发送Ascii字符和发送打印机命令(设置字体样式,颜色等)为特定的打印机,或者第二种方法是使用c#设置字体,大小等,就像打印任何其他普通/桌面打印机一样。

你可以试着按照这个页面的例子和我的建议来打印:http://ondotnet.com/pub/a/dotnet/2002/06/24/printing.html