Каков предпочтительный метод печати на принтер в VB.NET?

немного фона: создание программы, которая генерирует отчеты и формы из входных данных базы данных. У меня все работает и работает нормально, но я не могу понять свою проблему с печатью. Я пробовал несколько методов печати на принтере, и каждый документ, который я печатаю из своей пользовательской программы, немного смещен вправо от центра страницы.

Я понимаю, что причиной этого является сам принтер, но как я могу приспособить для этого? В предварительный просмотр отчет выглядит идеально. Мне нужно некоторое руководство о том, какие методы будут работать на нескольких, разнообразных принтерах в VB.NET - ... Любая помощь очень ценится.

1 ответов


вместо использования e.pagebounds для ограничивающей рамки попробуйте использовать e.графика.VisibleClipBounds. Некоторые драйверы принтера немного ненадежны с e.pagebounds, и visibleclipbounds кажется более точным.

например:

Sub printPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)
Dim g As Graphics
g = e.Graphics
g.ResetTransform()

g.VisibleClipBounds теперь прямоугольник, который должен быть максимальный размер страницы, и может использоваться для центрирования текста или графики. Просто используйте g в качестве графического объекта для вывода на принтер. Горизонтальный центр страницы is

g.VisibleClipBounds.Left + g.VisibleClipBounds.Width / 2