Распечатать документ, игнорировать подачу страницы для термопринтеров

Есть ли способ игнорировать подачу страницы для термопринтеров при использовании PrintDocument? С точки зрения печати "квитанции", если на нем много элементов (100), принтер всегда помещает пустое пространство между элементами, где он считает, что должна быть подача страницы.

Моя проблема в том, что нет страниц для подачи, это непрерывный рулон бумаги.

В драйверах принтера щелкните правой кнопкой мыши на принтере -> Настройки принтера -> Вкладка "Параметры документа"; Я установил Источник бумаги на Page[NoFeed,Cut] а также Document[NoFeed,Cut] но у меня все та же проблема.

Я также попытался установить "Размер бумаги, определяемый пользователем", но кажется, что драйверы EPSON не поддерживают это. Моя идея заключалась в том, что я просто установил бы высоту страницы очень долго. Изменить Я попытался настроить принтер на использование формы длиной 3276,00 см, но у меня все еще остается та же проблема. Я также попытался настроить принтер как универсальный принтер, и все еще вижу ту же проблему

Вот код, который я использую, возможно, есть способ сделать это на лету, в коде?

  private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
        {


            int charactersOnPage = 0;
            int linesPerPage = 0;

            // Sets the value of charactersOnPage to the number of characters 
            // of stringToPrint that will fit within the bounds of the page.
            e.Graphics.MeasureString(pageString, this.Font,
                e.MarginBounds.Size, StringFormat.GenericTypographic,
                out charactersOnPage, out linesPerPage);

            // Draws the string within the bounds of the page
            e.Graphics.DrawString(pageString, this.Font, Brushes.Black,
                e.MarginBounds, StringFormat.GenericTypographic);

            // Remove the portion of the string that has been printed.
            pageString = pageString.Substring(charactersOnPage);

            // Check to see if more pages are to be printed.
            e.HasMorePages = (pageString.Length > 0);
        }




    private void metroButton2_Click(object sender, EventArgs e)
    {

        for (int i = 0; i < 200; i++)
        {
            pageString += "Salesitem " + i.ToString() + " \n";
        }

        bool online = printDocument1.PrinterSettings.IsValid;
        if (online)
            printDocument1.Print();
        else
            MessageBox.Show("Printer Offline");

    }

Большое спасибо за уделенное время. Я видел несколько похожих вопросов по SO, но большинство из них, которые я могу понять, основаны на использовании драйвера для решения этой проблемы. Это не применимо для меня, потому что у меня есть два требования от моего босса, их драйвер для моего принтера, и более старые модели не поддерживают создание нестандартных размеров страниц непосредственно из драйвера, и, похоже, не работают для отключения подачи страниц. Мне нужен способ решить эту проблему с помощью кода, если это возможно.

Изменить: я чувствую, что я попробовал все. Я попытался отправить данные на принтер порциями, но проблема в том, что каждый раз printDocument1_PrintPage выполняется путем проверки e.HasMorePages = (pageString.Length > 0); команда подачи страницы или перевода строки отправляется на принтер (TMT 88IV, TMT 88II), даже если в драйвере он установлен на рулон бумаги.

Я также пытался использовать нестандартный тип бумаги, начиная с небольшой высоты бумаги и динамически увеличивая ее до каждого раза, когда я рисую линию, но, тем не менее, это похоже на высоту бумаги, заданную в коде и драйвером принтера (это устанавливается в драйвере длиной 3276,00 см), игнорируется при каждом возникновении события страницы.

Единственный способ, которым я смог обойти это, - использовать класс RawPrinterHelper и сам отправлять команды печати. Да, это легко, но я бы хотел иметь возможность легко использовать функции.net для шрифтов, печати изображений, мониторинга очереди и т. Д. Обидно, буквально единственное, что меня останавливает, - это огромный интервал, автоматически вставляемый в непрерывную рулонную бумагу на чеках, превышающих стандартную высоту страницы.

0 ответов

Другие вопросы по тегам