Я пытаюсь распечатать квитанцию в приложении windowsforms. Я написал тестовый код для запуска и печати строк от 0 до 100. Моя проблема в том, что он печатает до строки 45 и не выдает никакой ошибки. У меня есть термопринтер xPrinter xp-80c, на этом принтере максимальная длина бумаги составляет 30см. А при печати в pdf это только печать на 1 странице.
Может кто-нибудь, пожалуйста, помогите здесь и расскажите, что не так.
Заранее спасибо.
public static void printNewMethodFromVideoDeleteMeWhenDone()
{
PrintDialog printDialog = new PrintDialog();
PrintDocument printDocument = new PrintDocument();
printDialog.Document = printDocument;
printDocument.PrintPage += printDocument3_PrintPage;
DialogResult result = printDialog.ShowDialog();
if(result == DialogResult.OK)
{
printDocument.Print();
}
}
private static void printDocument3_PrintPage(object sender, PrintPageEventArgs e)
{
try
{
Graphics graphic = e.Graphics;
Font font = new Font("Courier New", 12);
float fontHeight = font.GetHeight();
SolidBrush brush = new SolidBrush(Color.Black);
int startX = 10;
int startY = 10;
int offset = 40;
graphic.DrawString("Welcome to the shop", new Font("Courier New", 16), brush, startX, startY);
for (int i = 0; i < 100; i++)
{
string productDescription = "Some text " + i.ToString().PadRight(30);
string productTotal = string.Format("{0:c}", i.ToString());
string line = productDescription + productTotal;
graphic.DrawString(line, font, new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
}
offset = offset + 20;
graphic.DrawString("Total To Pay".PadRight(30) + string.Format("{0:c}", 100.ToString()), font, brush, startX, startY + offset);
}
catch(Exception ex)
{
// some code here.
}
}