2012-05-09 37 views
12

Tôi có ứng dụng Silverlight 5 OOB (với Quyền nâng cao) chỉ được triển khai cho một số người dùng của chúng tôi. Một số người dùng trong số này đang báo cáo rằng các bản in đang trống hoặc rất mờ nhạt. Những máy in này in tài liệu Word chính xác và tôi không thể tái tạo sự cố trên máy in của riêng tôi.Silverlight 5 không in trên một số máy in

Tất cả người dùng đều sử dụng Windows XP SP3 32 bit và tôi đang phát triển trên Win7 64 bit.

Khi có ai thấy vấn đề này trước đây? Hoặc bất kỳ ý tưởng gì có thể gây ra điều này?

Giúp đánh giá cao.

Nhiều Cảm ơn, Andrew

+0

Công cụ báo cáo của bạn là gì? Có bất kỳ bên thứ 3 Telerik, Devart, vvWhat về On xem trước là nó tốt? Chúng tôi havent phải đối mặt, nhưng cảm ơn cho chia sẻ của bạn. –

+0

Trang đang được in có các điều khiển tiêu chuẩn. Chúng tôi tin rằng đó là sự cố trình điều khiển máy in. –

+1

Vì vậy, những gì về khi bạn in máy in XPS, hoặc máy in PDF ảo.Nếu họ là ok, nó có thể là một vấn đề trình điều khiển. –

Trả lời

1

Tôi có nên Got Giải pháp có thể hữu ích Để Bạn ............................

Đầu tiên tôi đã tạo một PrintDocument mới và kết nối một số trình xử lý cho sự kiện PrintPage của nó.

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

Sau đó, chúng tôi có thể gọi chức năng PrintBitmap trên PrintDocument bất cứ khi nào bạn muốn in. Ở đây tôi đang thực hiện nó khi người dùng nhấp vào nút In.

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

Bây giờ đến phần quan trọng. Chúng tôi có thể chiếm đoạt nội dung được nhắm mục tiêu bằng cách móc vào sự kiện PrintPage (như đã xử lý ở trên). Tôi có thể đặt e.PageVisual thành bất kỳ phần tử xaml trực quan nào và PrintBitmap sẽ xử lý nó. Ở đây tôi sử dụng chức năng GetPages và lặp lại để đảm bảo rằng tôi in từng trang (một phần tử pdfviewer). Tuy nhiên, bạn có thể trỏ nó vào bất kỳ yếu tố trực quan nào như tôi đã nói.

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 

e.HasMorePages cho phép bạn kích hoạt sự kiện này cho đến khi bạn hoàn tất.

Hy vọng điều này hữu ích đối với ai đó. Với Silverlight 5 và hỗ trợ máy in Post-Script, rất nhiều máy in có bộ giả lập PostScript có thể không tương thích, nhưng cũng sẽ không mặc định in bitmap. Cách giải quyết này khắc phục điều đó, làm cho việc in ấn ổn định hơn một chút trong một ứng dụng kiểu LOB.

Các vấn đề liên quan