Есть проблема.
Нужно вывести на печать таблицу.
Использовав PrintPreviewDialog, у меня получилось сформировать и вывести на экран то, что я хотел бы отпечатать, но нажатие кнопки принтера на самом PrintPreviewDialog выдает одну пустую страницу.
Решил использовать PrintPreviewControl.
Получилось еще лучше - добавил на форму кнопки (для перемещения по страницам), текстбокс (с номером текущей страницы и быстрой навигации) и комбобокс (для масштабирования). Написал обработчики к ним.
Но, столкнулся с другими глюками:
1. Установка полей границ печати СИЛЬНО отличается от того, что печатается на принтер. Идет смещение вправо и вниз примерно 4-6мм, хотя на экране все отображается корректно.
2. При печати выбранного диапазона или какой-то конкретной страницы не удается избежать вывода пустых страниц до печати необходимой. Например, хочу отпечатать с 3 по 7 страницу из 28 возможных. В коде обработчика печати эмулирую формирование страницы, но все операторы, которые отвечают за вывод на печать блокирую (If isPriview Then e.Graphics.DrawString(Str.ToUpper, tableFont, Brushes.Black, R)), где переменная isPreview отвечает за вывод на печать только той страницы, которая попала в диапазон.
При выводе на печать выдается 2 пустых страницы и с 3 по 7 с информацией.
Отсюда вопрос:
Как избежать печати пустых страниц?