powinienem Got rozwiązanie może być przydatne do Ciebie ............................
Najpierw utworzyłem nowy PrintDocument i podłączyłem kilka programów obsługi dla zdarzenia PrintPage.
mobjPrintDocument = New PrintDocument
RemoveHandler mobjPrintDocument.PrintPage, AddressOf Print_Report
AddHandler mobjPrintDocument.PrintPage, AddressOf Print_Report
Wtedy możemy wywołać funkcję PrintBitmap na PrintDocument kiedy chcesz wydrukować. Robię to, gdy użytkownik kliknie przycisk Drukuj.
Private Sub xbtnPrint_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
mintPageIndex = 0
mobjPrintDocument.PrintBitmap(FileName)
End Sub
Teraz jest ważna część. Możemy przejąć kontrolę nad treścią, na którą ma wpływ podpięcie się do zdarzenia PrintPage (jak wyżej). Mogę ustawić e.PageVisual na dowolny wizualny element xaml, a PrintBitmap go obsłuży. Używam tutaj funkcji GetPages i przechodzę do niej, aby upewnić się, że wydrukuję każdą stronę (element pdfviewer). Możesz jednak wskazać dowolny element wizualny, tak jak powiedziałem.
Private Sub Print_Report(sender As System.Object, e As PrintPageEventArgs)
e.PageVisual = xobjReportViewer.GetPages(mintPageIndex)
mintPageIndex += 1
e.HasMorePages = mintPageIndex < xobjReportViewer.GetPages.Count
End Sub
Strony e.HasMorePages umożliwiają wymuszenie zwolnienia tego zdarzenia do momentu zakończenia.
Mam nadzieję, że jest to pomocne dla kogoś. Dzięki obsłudze Silverlight 5 i post-skryptów wiele drukarek z emulatorem PostScript może nie być zgodna, ale nie będzie domyślnie drukować w trybie bitmapowym. Rozwiązanie to polega na tym, że drukowanie staje się nieco bardziej stabilne w aplikacji typu LOB.
Jaki jest twój silnik raportowania? Czy jest jakiś telerik 3rd party, Devart itp. Co na temat podglądu jest dobrze? Nie mieliśmy do czynienia, ale dziękuję za udział. –
Drukowane strony mają standardowe elementy sterujące. Uważamy, że jest to problem ze sterownikiem drukarki. –
A co z drukowaniem na drukarkach XPS lub wirtualnych drukarkach PDF. Jeśli wszystko jest w porządku, może to być problem ze sterownikiem. –