Vb.net 如何使用reportviewer打印rdlc报告

Vb.net 如何使用reportviewer打印rdlc报告,vb.net,rdlc,reportviewer,Vb.net,Rdlc,Reportviewer,大家好,有人能帮我用控制按钮打印收据吗 这是我的屏幕截图[1] 如果单击“保存打印”按钮,将显示预览对话框 我只想通过单击按钮而不显示对话框来自动打印所需的报告 [2] 在打开报表查看器之前,可以先获取默认打印机名称: System.Drawing.Printing.PrinterSettings settings = new System.Drawing.Printing.PrinterSettings(); defaultPrinterName = settings.PrinterName

大家好,有人能帮我用控制按钮打印收据吗

这是我的屏幕截图[1]

如果单击“保存打印”按钮,将显示预览对话框 我只想通过单击按钮而不显示对话框来自动打印所需的报告


[2]

在打开报表查看器之前,可以先获取默认打印机名称:

System.Drawing.Printing.PrinterSettings settings = new System.Drawing.Printing.PrinterSettings();
defaultPrinterName = settings.PrinterName;
打印时,将打印机名称指定给PrintDocument的PrinterName属性:

处理实际打印的事件:

 //this has to declared somewhere at the "top":
 private IList<Stream> m_streams;
 private int m_currentPageIndex;


 private void PrintPage(object sender, PrintPageEventArgs ev) {
        Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);

        // Adjust rectangular area with printer margins.
        Rectangle adjustedRect = new Rectangle(
            ev.PageBounds.Left - (int)ev.PageSettings.HardMarginX,
            ev.PageBounds.Top - (int)ev.PageSettings.HardMarginY,
            ev.PageBounds.Width,
            ev.PageBounds.Height);

        // Draw a white background for the report
        ev.Graphics.FillRectangle(Brushes.White, adjustedRect);

        // Draw the report content
        ev.Graphics.DrawImage(pageImage, adjustedRect);

        // Prepare for the next page. Make sure we haven't hit the end.
        m_currentPageIndex++;
        ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
    }
以下是创建打印文档的代码:

private void ExportPortrait(LocalReport report) {
            string deviceInfo =
              @"<DeviceInfo>
                <OutputFormat>EMF</OutputFormat>
                <PageWidth>8.5in</PageWidth>
                <PageHeight>11in</PageHeight>
                <MarginTop>0.5in</MarginTop>
                <MarginLeft>0.5in</MarginLeft>
                <MarginRight>0.5in</MarginRight>
                <MarginBottom>0.5in</MarginBottom>
            </DeviceInfo>";
            Warning[] warnings;
            m_streams = new List<Stream>();
            report.Render("Image", deviceInfo, CreateStream, out warnings);
            foreach (Stream stream in m_streams)
                stream.Position = 0;
}

private void ExportLandscape(LocalReport report) {
        string deviceInfo =
          @"<DeviceInfo>
            <OutputFormat>EMF</OutputFormat>
            <PageWidth>11in</PageWidth>
            <PageHeight>8.5in</PageHeight>
            <MarginTop>0.5in</MarginTop>
            <MarginLeft>0.5in</MarginLeft>
            <MarginRight>0.5in</MarginRight>
            <MarginBottom>0.5in</MarginBottom>
        </DeviceInfo>";
        Warning[] warnings;
        m_streams = new List<Stream>();
        report.Render("Image", deviceInfo, CreateStream, out warnings);
        foreach (Stream stream in m_streams)
            stream.Position = 0;
}

private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek) {
            Stream stream = new MemoryStream();
            m_streams.Add(stream);
            return stream;
 }
您可以使用类似的方法将代码转换为vb.net

private void ExportPortrait(LocalReport report) {
            string deviceInfo =
              @"<DeviceInfo>
                <OutputFormat>EMF</OutputFormat>
                <PageWidth>8.5in</PageWidth>
                <PageHeight>11in</PageHeight>
                <MarginTop>0.5in</MarginTop>
                <MarginLeft>0.5in</MarginLeft>
                <MarginRight>0.5in</MarginRight>
                <MarginBottom>0.5in</MarginBottom>
            </DeviceInfo>";
            Warning[] warnings;
            m_streams = new List<Stream>();
            report.Render("Image", deviceInfo, CreateStream, out warnings);
            foreach (Stream stream in m_streams)
                stream.Position = 0;
}

private void ExportLandscape(LocalReport report) {
        string deviceInfo =
          @"<DeviceInfo>
            <OutputFormat>EMF</OutputFormat>
            <PageWidth>11in</PageWidth>
            <PageHeight>8.5in</PageHeight>
            <MarginTop>0.5in</MarginTop>
            <MarginLeft>0.5in</MarginLeft>
            <MarginRight>0.5in</MarginRight>
            <MarginBottom>0.5in</MarginBottom>
        </DeviceInfo>";
        Warning[] warnings;
        m_streams = new List<Stream>();
        report.Render("Image", deviceInfo, CreateStream, out warnings);
        foreach (Stream stream in m_streams)
            stream.Position = 0;
}

private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek) {
            Stream stream = new MemoryStream();
            m_streams.Add(stream);
            return stream;
 }