如何使用reportviewer打印rdlc报告

时间:2017-08-17 08:22:44

标签: vb.net rdlc reportviewer

你好,伙计们可以帮助我如何使用控制按钮打印我的收据吗?

  这是我的屏幕截图[1]" https://ibb.co/kfk8SF

     

如果我点击" SAVE PRINT"按钮出现预览对话框   我只想通过单击按钮自动打印我想要的报告,没有出现对话框   

[2] https://ibb.co/kSpDuv

1 个答案:

答案 0 :(得分:0)

您可以先获取默认打印机名称(在打开报告查看器之前):

System.Drawing.Printing.PrinterSettings settings = new System.Drawing.Printing.PrinterSettings();
defaultPrinterName = settings.PrinterName;

打印时,请将您的打印机名称指定为PrinterName的{​​{1}}属性:

PrintDocument

处理实际打印的事件:

 LocalReport rep = new LocalReport();
 //set your data and parameters here
 //...
 rep.Refresh();
 ExportLandscape(rep);

 PrintDocument printDoc = new PrintDocument();
 PrinterSettings ps = new PrinterSettings();
 ps.PrinterName = defaultPrinterName;
 printDoc.PrinterSettings = ps;

 printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
 m_currentPageIndex = 0;
 printDoc.Print();

以下是创建打印文档的代码:

 //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);
    }

您可以使用类似this的内容将代码转换为vb.net。