Предварительный просмотр и печать многостраничного документа в .net
Есть проект на VB.NET - проект коннектится к бд Access через ADO.NET. Проблема в следующем, хочу распечатать многостраничный документ.
Для этого кидаю компонент DocumentPrint, в его обработчике Print_Page формирую документ на печать из запросов к бд. Если вывожу все это на принтер - все работает как надо (все отлично печатает на несколько страниц). Теперь хочу сделать еще и предварительный просмотр. Для этого кидаю компонент PrintPreviewDialog - цепляю к нему мой PrintDocument, по какой-то кнопке показываю PrintPreviewDialog. В окне просмотра - все отображается отлично (на несколько страниц), однако при нажатии на печать - на принтере выдается только часть информации, сформированной в PrintDocument(последние строки) и всегда печатается только одна страница.
При формировании многостраничного документа используется параметр HasMorePages - так вот если он с самого начала установлен в false - т.е. типа одностраничный документ - все работает без проблем, а вот если он устанавливается в true, то возникает вышеуказанная проблема - в окне предварительного просмотра или при печати напрямую (без вызова диалога предварительного просмотра) он разбивает документ на страницы, а при печати из диалога - он только показывает разбивку на экране, а на принтере ее не выполняет.
Вобщем, нет тут форума посвященного .NET, поэтому пишу здесь.
Есть проект на VB.NET - проект коннектится к бд Access через ADO.NET. Проблема в следующем, хочу распечатать многостраничный документ.
Для этого кидаю компонент DocumentPrint, в его обработчике Print_Page формирую документ на печать из запросов к бд. Если вывожу все это на принтер - все работает как надо (все отлично печатает на несколько страниц). Теперь хочу сделать еще и предварительный просмотр. Для этого кидаю компонент PrintPreviewDialog - цепляю к нему мой PrintDocument, по какой-то кнопке показываю PrintPreviewDialog. В окне просмотра - все отображается отлично (на несколько страниц), однако при нажатии на печать - на принтере выдается только часть информации, сформированной в PrintDocument(последние строки) и всегда печатается только одна страница.
При формировании многостраничного документа используется параметр HasMorePages - так вот если он с самого начала установлен в false - т.е. типа одностраничный документ - все работает без проблем, а вот если он устанавливается в true, то возникает вышеуказанная проблема - в окне предварительного просмотра или при печати напрямую (без вызова диалога предварительного просмотра) он разбивает документ на страницы, а при печати из диалога - он только показывает разбивку на экране, а на принтере ее не выполняет.
Сталкивался с подобным при работе с Cristal Report. У тебя что извлекается из БД? Текст, или картинка? Попробуй, если что, не непосредственно из запроса печатать, а сохранять в какой-либо буфер, и принтить из него. У меня с "Кристалом" другая беда была - наоборот из буфера неверно печатал (там я хранил картинку).
Сталкивался с подобным при работе с Cristal Report. У тебя что извлекается из БД? Текст, или картинка? Попробуй, если что, не непосредственно из запроса печатать, а сохранять в какой-либо буфер, и принтить из него. У меня с "Кристалом" другая беда была - наоборот из буфера неверно печатал (там я хранил картинку).
текст из бд извлекается.
но документ на печать я сам формирую.
Я уже подумываю о том, чтобы самому реализовать диалог предварительного просмотра...
текст из бд извлекается.
но документ на печать я сам формирую.
Я уже подумываю о том, чтобы самому реализовать диалог предварительного просмотра...
Ну как, справился?:P
Ну как, справился?:P
Счас срочно на другой проект перебросили :) VC++ forever, к VB.NET вернемси попозже.
Ну как, справился?:P
сделал я этот диалог предварительного просмотра, всего 3 кнопочки - печать, просмотр следующей страницы, просмотр предыдущей страницы... печать теперь явно из основной формы вызываю : PrintDocument.Print() все равно такая же фигня получается :( похоже где-то проблемы при формировании документа :(:(:(
сделал я этот диалог предварительного просмотра, всего 3 кнопочки - печать, просмотр следующей страницы, просмотр предыдущей страницы... печать теперь явно из основной формы вызываю : PrintDocument.Print() все равно такая же фигня получается :( похоже где-то проблемы при формировании документа :(:(:(
все разобрался, из моего диалога все печатает :) "проблема" была при формировании документа, но как заставить корректно работать стандартный диалог - хз.