Печать длинного чека - PullRequest
       2

Печать длинного чека

0 голосов
/ 27 января 2019

Я пытаюсь распечатать квитанцию ​​в приложении 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.
        }
    }

1 Ответ

0 голосов
/ 27 января 2019

используйте ваше программирование на C # в цикле для создания HTML-документа и используйте функцию webBrowser.Print () для печати. Это намного проще.

Вызовите webBrowser.ShowPrintPreview (), чтобы настроить бумагу и поля на ноль.

создать событие documentReady для печати документа после того, как веб-браузер завершил рендеринг документа.

webBrowser.DocumentReady += webBrowser_documentReady;

Вот пример проекта, который демонстрирует идею: http://www.mediafire.com/file/te2lm9sbfvln7bp/WebBrowserPrinter.zip/file

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...