raj441977 Ответов: 1

Как ускорить печать в VB.NET -что ?


У меня есть код для печати ваучеров, он работает нормально. Проблема в том, что для начала печати требуется 2/3 секунды, но мой клиент хочет быстрой печати. показываю код, Пожалуйста помогите

вот мой код

Private Sub Btn_Print_Test_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Print_Test.Click
        Me.Btn_Print_Test.Enabled = False
        Dim document As New PrintDocument
        AddHandler document.PrintPage, New PrintPageEventHandler(AddressOf Me.TestPrint_PrintPage)
        document.PrintController = New StandardPrintController
        document.Print()
        Me.Btn_Print_Test.Enabled = True
    End Sub

    Private Sub TestPrint_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)
        e.Graphics.DrawString("* 012345678987654*", New Font("Free 3 of 9 Extended", 17.0!, FontStyle.Regular), Brushes.Black, CSng(2.0!), CSng(0.0!))
        e.Graphics.DrawString("* 012345678987654*", New Font("Free 3 of 9 Extended", 17.0!, FontStyle.Regular), Brushes.Black, CSng(2.0!), CSng(17.5!))
        e.Graphics.DrawString(Strings.Space(10) & "* 012345678987654 *", New Font("Courier", 8.0!, FontStyle.Regular), Brushes.Black, CSng(2.0!), CSng(38))
    End Sub


Что я уже пробовал:

Я искал так много учебников, связанных с печатью, но ничего не помогло мне

1 Ответов

Рейтинг:
2

Dave Kreskowiak

Проблема в том, что Вы имеете дело с диспетчером очереди печати Windows. Чертежи, которые вы делаете, помещаются в очередь, а не печатаются непосредственно. Драйвер принтера должен преобразовать ваши команды рисования в язык, понятный принтеру для описания изображения страницы, а затем эти данные должны быть отправлены на принтер. Обычно вы отправляете на принтер большое количество данных, описывающих изображение страницы.

Нет никакого способа ускорить это.

Единственный вариант-отправить текст и изображения на принтер напрямую, минуя буферизатор, на понятном принтеру языке. Проблема с этим заключается в том, что вы должны изучить язык принтера и написать тонну кода для описания и компоновки текста и изображений самостоятельно, Преобразуя все на понятный принтеру язык. Ваш код также будет поддерживать только те принтеры, которые понимают один и тот же язык, ограничивая возможности вашего принтера.


Maciej Los

5ed!

raj441977

можете ли вы поделиться учебником по прямой печати в обход диспетчера очереди Windows ?

Dave Kreskowiak

На самом деле это не учебник, но код в значительной степени объясняет, что происходит:

https://www.c-sharpcorner.com/article/printing-directly-to-the-printer/

raj441977

Я получил это, и это помогло мне напечатать прямо. Прямая печать raw происходит так быстро, как я и искал, но вот с какой проблемой я столкнулся, как изменить шрифт или размер шрифта для печати ? как распечатать штрих-код ? кажется, это выглядит простой Строковой печатью

Dave Kreskowiak

Вот тут-то и появляется "написать тонну кода". Вы должны выяснить, как рисовать ваши изображения и конвертировать их в данные, необходимые принтеру. Вероятно, в справочнике команд принтеров есть графические команды. Вам нужно будет нарисовать свои изображения в растровом изображении, а затем преобразовать растровые данные в структуры, необходимые принтеру. Это включает в себя штрих-коды, так как это всего лишь изображения!

Dave Kreskowiak

Да, и смена шрифтов... вы ограничены шрифтами, встроенными в принтер. Если вы хотите сделать больше, чем это, вам придется либо определить свои собственные шрифты и загружать их на принтер каждый раз, когда он включен или запускается ваше приложение (если принтер поддерживает его!!), либо вы вернетесь к использованию Windows для печати, и вам придется мириться с 2-3-секундным временем, чтобы начать печать.