我试图使用以下代码向打印机打印收据。问题是收据未完整打印。我认为它只打印一页,但我不打印前如何设置页码。使用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;
}
cicle将为每个要交付的物品打印6个属性。它可以是任何数量的itmes。 –