2012-05-09 14 views
12

Mam aplikację Silverlight 5 OOB (z podwyższonymi uprawnieniami), która została właśnie wdrożona u wielu naszych użytkowników. Niektórzy z tych użytkowników zgłaszają, że wydruki są puste lub bardzo słabe. Te drukarki poprawnie drukują dokumenty programu Word i nie mogę odtworzyć problemu na własnych drukarkach.Silverlight 5 nie drukuje na niektórych drukarkach

Wszyscy użytkownicy mają 32-bitowy system Windows XP SP3 i rozwijam się na 64-bitowym systemie Win7.

Jak ktoś wcześniej widział ten problem? Albo jakaś idea, co może być przyczyną tego?

Pomoc doceniane.

Wielkie dzięki, Andrew

+0

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ł. –

+0

Drukowane strony mają standardowe elementy sterujące. Uważamy, że jest to problem ze sterownikiem drukarki. –

+1

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. –

Odpowiedz

1

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.

Powiązane problemy