2012-05-09 22 views
12

Tengo una aplicación OOB de Silverlight 5 (con Permisos Elevados) que acaba de implementarse en varios de nuestros usuarios. Algunos de estos usuarios informan que las impresiones salen en blanco o son muy débiles. Estas impresoras sí imprimen documentos de Word correctamente y no puedo reproducir el problema en mis propias impresoras.Silverlight 5 no está imprimiendo en algunas impresoras

Todos los usuarios están en Windows XP SP3 de 32 bits, y estoy desarrollando en Win7 de 64 bits.

Como ha visto este problema anteriormente? ¿O alguna idea de qué podría estar causando esto?

Ayuda muy apreciada.

Muchas Gracias, Andrew

+0

¿Cuál es su motor de informes? ¿Hay algún tercero Telerik, Devart, etc.? ¿Qué pasa con la vista previa? ¿Está bien? No nos hemos enfrentado, pero gracias por tu participación. –

+0

La página que se está imprimiendo tiene controles estándar. Creemos que es un problema de controlador de impresora. –

+1

Entonces, ¿qué ocurre cuando imprime en una impresora XPS o en impresoras virtuales PDF? Si están bien, podría ser un problema del controlador. –

Respuesta

1

I Should Got solución puede ser útil para Usted ............................

Primero creé un nuevo PrintDocument y conecté algunos controladores para su evento PrintPage.

mobjPrintDocument = New PrintDocument 
RemoveHandler mobjPrintDocument.PrintPage, AddressOf Print_Report 
AddHandler mobjPrintDocument.PrintPage, AddressOf Print_Report 

Luego podemos llamar a la función PrintBitmap en el PrintDocument siempre que desee imprimir. Aquí lo hago cuando el usuario hace clic en el botón Imprimir.

Private Sub xbtnPrint_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) 
    mintPageIndex = 0 
    mobjPrintDocument.PrintBitmap(FileName) 
    End Sub 

Ahora viene la parte importante. Podemos secuestrar el contenido al que se apunta mediante el enganche al evento PrintPage (como se manejó anteriormente). Puedo establecer e.PageVisual en cualquier elemento xaml visual y PrintBitmap lo manejará. Aquí utilizo la función GetPages y recorro para asegurarme de que imprimo cada página (un elemento pdfviewer). Sin embargo, puedes señalarlo a cualquier elemento visual como dije.

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 

El e.HasMorePages le permite forzar el disparo de este evento hasta que finalice.

Espero que esto sea útil para alguien. Con Silverlight 5 y el soporte de impresora Post-Script, muchas impresoras que tienen un emulador de PostScript pueden no ser compatibles, pero tampoco serán predeterminadas para la impresión de mapa de bits. Esta solución lo soluciona, lo que hace que la impresión sea un poco más estable en una aplicación de tipo LOB.

Cuestiones relacionadas