2012-05-09 14 views
12

Ho un'applicazione Silverlight 5 OOB (con autorizzazioni elevate) che è stata appena distribuita a un numero di nostri utenti. Alcuni di questi utenti stanno segnalando che le stampe stanno uscendo bianche o molto deboli. Queste stampanti stampano correttamente i documenti Word e non riesco a riprodurre il problema sulle mie stampanti.Silverlight 5 non stampa su alcune stampanti

Tutti gli utenti sono su Windows XP SP3 a 32 bit e sto sviluppando su Win7 a 64 bit.

Come si è visto prima questo problema? O qualche idea di cosa potrebbe causare questo?

Aiuto molto apprezzato.

Molte grazie, Andrew

+0

Qual è il tuo motore di segnalazione? C'è qualche Telerik di terze parti, Devart ecc. Che ne pensi di In anteprima va bene? Non abbiamo affrontato, ma grazie per la tua parte. –

+0

La pagina stampata ha controlli standard. Riteniamo che sia un problema con il driver della stampante. –

+1

Quindi, quando si stampa su stampanti XPS o stampanti PDF virtuali. Se sono ok, potrebbe essere un problema di driver. –

risposta

1

I Should Got soluzione può essere utile a voi ............................

Per prima cosa ho creato un nuovo PrintDocument e ho collegato alcuni gestori per l'evento PrintPage.

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

Quindi è possibile chiamare la funzione PrintBitmap su PrintDocument ogni volta che si desidera stampare. Qui lo sto facendo quando l'utente fa clic sul pulsante Stampa.

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

Ora arriva la parte importante. Possiamo dirottare il contenuto preso di mira dall'aggancio all'evento PrintPage (come descritto sopra). Posso impostare e.PageVisual su qualsiasi elemento xaml visivo e PrintBitmap lo gestirà. Qui utilizzo la funzione GetPages e cerco di stampare ogni pagina (un elemento pdfviewer). Tuttavia, puoi puntarlo su qualsiasi elemento visivo come ho detto.

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 

Il e.HasMorePages consente di forzare lo sparo di questo evento fino al termine.

Spero che questo sia utile a qualcuno. Con Silverlight 5 e il supporto per la stampante PostScript, molte stampanti che hanno un emulatore PostScript potrebbero non essere compatibili, ma non verranno utilizzate anche per la stampa bitmap. Questa soluzione alternativa risolve il problema, rendendo la stampa un po 'più stabile in un'applicazione di tipo LOB.

Problemi correlati