Page view counter

VS2005 Web ReportViewer client browser printing ??

Last post 01-08-2007 1:01 AM by jcwy. 4 replies.

Sort Posts:

  • VS2005 Web ReportViewer client browser printing ??

    01-04-2007, 1:12 AM
    • Loading...
    • jcwy
    • Joined on 01-04-2007, 12:57 AM
    • Posts 8
    • Points 1

    hi all,

    As what I know there is no PRINT button in VS2005 web ReportViewer. But then microsoft do provide a way to render report in EMF for printing. I tried the sample code, but it looks like the printing job is occured at the printer attached to the server. What I want is the printing should be occured at the client printer. Anybody got idea on it ? Is it I missed up something from the sample code ?

    Anyone has tried the microsoft EMF-rendering print sample code (for web) and can print at client printer ?

     Thank you.

     

  • Re: VS2005 Web ReportViewer client browser printing ??

    01-04-2007, 11:15 AM
    • Loading...
    • johnzen
    • Joined on 10-23-2005, 1:38 PM
    • Posts 6
    • Points 13
    oh, Javascript can do it.I have a demo.if you need my help.just add my MSN:webmaster@socut.com .I think it is very easy,and i hope it help.
  • Re: VS2005 Web ReportViewer client browser printing ??

    01-04-2007, 10:23 PM
    • Loading...
    • jcwy
    • Joined on 01-04-2007, 12:57 AM
    • Posts 8
    • Points 1

    johnzen:
    oh, Javascript can do it.I have a demo.if you need my help.just add my MSN:webmaster@socut.com .I think it is very easy,and i hope it help.

    I wonder how Javascript can do it. I will find it out from johnzen through msn. Thanks johnzen.

    Anybody got idea how to do it too, kindly let me know. I really appreciate it.

    Thank All.

    regards,

    Jcwy 

     

     

     

  • Re: VS2005 Web ReportViewer client browser printing ??

    01-04-2007, 10:37 PM
    • Loading...
    • jcwy
    • Joined on 01-04-2007, 12:57 AM
    • Posts 8
    • Points 1

    The sample code i tried is as below. Why set to printer "Microsoft Office Document Image Writer" ? Must set like that to be able to print at client printer ?

    Imports System.IO
    Imports System.Data
    Imports System.Text
    Imports System.Drawing.Imaging
    Imports System.Drawing.Printing
    Imports System.Collections.Generic
    Imports Microsoft.Reporting.WebForms

    Public Class Demo
        Implements IDisposable

        private m_currentPageIndex As Integer
        private m_streams As IList(Of Stream)

        Private Function LoadSalesData() As DataTable
            Dim dataSet As New DataSet()
            dataSet.ReadXml("data.xml")
            Return dataSet.Tables(0)
        End Function

        Private Function CreateStream(name As String, _
             fileNameExtension As String, _
                  encoding As Encoding, mimeType As String, _
                      willSeek As Boolean) As Stream
            Dim stream As Stream = New FileStream(name + "." +  fileNameExtension, FileMode.Create)
            m_streams.Add(stream)
            Return stream
        End Function

        Private Sub Export(report As LocalReport)
            Dim deviceInfo As string = _
              "<DeviceInfo>" + _
              "  <OutputFormat>EMF</OutputFormat>" + _
              "  <PageWidth>8.5in</PageWidth>" + _
              "  <PageHeight>11in</PageHeight>" + _
              "  <MarginTop>0.25in</MarginTop>" + _
              "  <MarginLeft>0.25in</MarginLeft>" + _
              "  <MarginRight>0.25in</MarginRight>" + _
              "  <MarginBottom>0.25in</MarginBottom>" + _
              "</DeviceInfo>"
            Dim warnings() As Warning = Nothing
            m_streams = New List(Of Stream)()
            report.Render("Image", deviceInfo, _
                  AddressOf CreateStream, warnings)

            Dim stream As Stream
            For Each stream In m_streams
                stream.Position = 0
            Next
        End Sub

        Private Sub PrintPage(sender As Object, ev As PrintPageEventArgs)
            Dim pageImage As New Metafile(m_streams(m_currentPageIndex))
            ev.Graphics.DrawImage(pageImage, ev.PageBounds)
         
            m_currentPageIndex += 1
            ev.HasMorePages = (m_currentPageIndex < m_streams.Count)
        End Sub

        Private Sub Print()
            Const printerName As String = "Microsoft Office Document Image Writer"

            If m_streams Is Nothing Or m_streams.Count = 0 Then
                Return
            End If

            Dim printDoc As New PrintDocument()
            printDoc.PrinterSettings.PrinterName = printerName
            If Not printDoc.PrinterSettings.IsValid Then
                Dim msg As String = String.Format(_
                     "Can't find printer ""{0}"".", printerName)
                Console.WriteLine(msg)
                Return
            End If
            AddHandler printDoc.PrintPage, AddressOf PrintPage
            printDoc.Print()
        End Sub

        Private Sub Run()
            Dim report As LocalReport = new LocalReport()
            report.ReportPath = "Report.rdlc"
            report.DataSources.Add(new ReportDataSource("Sales", LoadSalesData()))

            Export(report)

            m_currentPageIndex = 0
            Print()
        End Sub

        Public Overloads Sub Dispose() Implements IDisposable.Dispose
            If Not (m_streams Is Nothing) Then
                Dim stream As Stream
                For Each stream In m_streams
                   stream.Close()
                Next
                m_streams = Nothing
            End If
        End Sub

        Public Shared Sub Main(args as string())
            Using demo As Demo = new Demo()
                demo.Run()
            End Using
        End Sub
    End Class

  • Re: VS2005 Web ReportViewer client browser printing ??

    01-08-2007, 1:01 AM
    • Loading...
    • jcwy
    • Joined on 01-04-2007, 12:57 AM
    • Posts 8
    • Points 1

    Impossible to print at client printer through LocalReport at VS2005 ReportViewer Control ?

    The only way is has to export to PDF/Excel first, then print the PDF/Excel file locally ?

    No alternative way to print localreport at client printer ?

     

    regards,

    Jcwy 

     

Page 1 of 1 (5 items)