用C#打印多个票据

时间:2013-11-30 15:47:50

标签: c#-2.0

我正在为国家公用事业公司的计费系统开发一个模块。该模块应该选择所有成功收费的客户并打印他们的账单。账单被写为文本文件并保存在本地文件夹中,程序必须拿起并逐个打印。我使用的是DFX-9000然而,每当新钞票进入时,打印机和预先格式化的卷纸,打印机在打印之前会跳过一些空间,这会扭曲第二张和后续钞票。 我尝试将所有账单放在一个文本文件中,当在记事本中打开但在我的代码中打开时,打印得很好。 这是我的代码的一部分

Font printFont = new Font("Lucida Console", 10);
    //static string filename;
    StreamReader reader = new StreamReader(Filename);
    public void Print()
    {
        try
        {
            PrintDocument pd = new PrintDocument();
            pd.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("myPaper", 826, 1169);
            pd.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);
            //pd.DefaultPageSettings.PrinterSettings.IsPlotter = true;
            pd.DefaultPageSettings.PrinterResolution.Kind = PrinterResolutionKind.Custom;
            pd.PrintPage += new PrintPageEventHandler(this.PrintTextFileHandler);
            pd.Print();
            if (reader != null)
                reader.Close();
            Console.WriteLine("Printout Complete");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    private void PrintTextFileHandler(object sender, PrintPageEventArgs pe)
    {
        StringFormat sf = new StringFormat();
        Graphics g = pe.Graphics;
        float linesPerPage = 0;
        float yPos = 0;
        int count = 0;
        float leftMargin = 40;//pe.MarginBounds.Left;
        float topMargin = pe.MarginBounds.Top;
        string line = null;
        linesPerPage = 500;// pe.MarginBounds.Height / printFont.GetHeight(g);
        while (count <= linesPerPage &&((line = reader.ReadLine()) != null))
        {
            yPos = topMargin + (count * printFont.GetHeight(g));
            g.DrawString(line, printFont, Brushes.Black, leftMargin, yPos);
            count++;
        }

        if (line != null)
        {
            pe.HasMorePages = true;
        }
        else
        {
            pe.HasMorePages = false;
        }

1 个答案:

答案 0 :(得分:0)

你的print.papersize会错吗?我注意到它是1169,没有标准纸张停在1100?