2014-03-26 207 views
1

我试图使用以下代码向打印机打印收据。问题是收据未完整打印。我认为它只打印一页,但我不打印前如何设置页码。使用PrintDocument打印到收据打印机不会打印所有内容

public void print() 
{ 
    pdoc = new PrintDocument(); 
    PaperSize psize = new PaperSize("Custom", 450, 820); 
    pdoc.DefaultPageSettings.PaperSize = psize; 
    pdoc.PrintPage += new PrintPageEventHandler(pdoc_PrintPage); 
    pdoc.Print(); 
} 

void pdoc_PrintPage(object sender, PrintPageEventArgs e) 
{ 
    Graphics graphics = e.Graphics; 
    Font font = new Font("Arial", 10); 
    var brush = new SolidBrush(Color.Black); 
    float fontHeight = font.GetHeight(); 
    int startX = 5; 
    int startY = 35; 
    int Offset = 40; 
    graphics.DrawString("    DIGITAL STORE    ", font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    graphics.DrawString("   ITEMS TO DELIVER    ", font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    string linea3 = string.Format("{0} Ticket#: {1}", DateTime.Now.ToString(), data[1]); 
    graphics.DrawString(linea3, font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    string linea4 = string.Format("NB#: {0}", data[2]); 
    graphics.DrawString(linea4, font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    graphics.DrawString("Item ID  Weigth  Price  Type", font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    graphics.DrawString("----------------------------------------", font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 

    var cant = (data.Length - 12)/6; 

    var pos = 12; 
    for (var i = 0; i < cant; i++) 
    { 
     var linea7 = string.Format("{0} {1} {2} {3}", data[pos++], data[pos++], data[pos++], data[pos++]); 
     graphics.DrawString(linea7, font, brush, startX, startY + Offset); 
     Offset = Offset + 20; 
     graphics.DrawString(data[pos++], font, brush, startX, startY + Offset); 
     Offset = Offset + 20; 
     graphics.DrawString(data[pos++], font, brush, startX, startY + Offset); 
     Offset = Offset + 20; 
     if (i != cant - 1) 
      Offset = Offset + 20; 
    } 

    Offset = Offset + 20; 
    string linea5 = string.Format("{0}: {1}", "Stock".PadRight(15), data[4]); 
    graphics.DrawString(linea5, font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    string linea6 = string.Format("{0}: {1}", "Total peso".PadRight(15), data[5]); 
    graphics.DrawString(linea6, font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    string linea71 = string.Format("{0}: {1}", "Total TAR1".PadRight(15), data[6]); 
    graphics.DrawString(linea71, font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    string linea8 = string.Format("{0}: {1}", "Total TAR2".PadRight(15), data[7]); 
    graphics.DrawString(linea8, font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    string linea9 = string.Format("{0}: {1} = {2}", "Total Vol".PadRight(15), data[8], data[9]); 
    graphics.DrawString(linea9, font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    string linea10 = string.Format("Items retirados: {0}", data[10]); 
    graphics.DrawString(linea10, font, brush, startX, startY + Offset); 
    Offset = Offset + 20; 
    string linea11 = string.Format("Usuario: {0}", data[11]); 
    graphics.DrawString(linea11, font, brush, startX, startY + Offset); 
    Offset = Offset + 60; 
    graphics.DrawString("----------------------------------------", font, brush, startX, startY + Offset); 
    Offset = Offset + 40; 
    string linea12 = string.Format("{0}", data[3].Replace("|", " ")); 
    graphics.DrawString(linea12, font, brush, startX, startY + Offset); 
    Offset = Offset + 40; 
    graphics.DrawString("   SIGNATUE   ", font, brush, startX, startY + Offset); 
    Offset = Offset + 40; 
    graphics.DrawString("*******THANKS FOR WORK WITH US********", font, brush, startX, startY + Offset); 
    Offset = Offset + 10; 
    if (data[0] == "R") 
     graphics.DrawString("**********************************", font, brush, startX, startY + Offset); 
    graphics.DrawString("a", font, brush, startX, startY + Offset); 
    e.HasMorePages = false; 
} 
+0

cicle将为每个要交付的物品打印6个属性。它可以是任何数量的itmes。 –

回答

0

另一种选择是您可以在布局>打印机首选项中更改打印机的纸张尺寸。选择“用户定义的纸张尺寸”可根据您的需要创建新的纸张尺寸。默认长度尺寸与A4尺寸类似。