コード例 #1
0
        private void InitPrinterParameter(string printerName = "")
        {
            PrintQueue pq = null;

            if (string.IsNullOrEmpty(printerName))
            {
                try
                {
                    pq = LocalPrintServer.GetDefaultPrintQueue();
                }
                catch { pq = null; }
            }
            else
            {
                try
                {
                    LocalPrintServer pser = new LocalPrintServer();
                    pq = pser.GetPrintQueue(printerName);
                }
                catch { pq = null; }
            }
            if (null != pq)
            {
                _printerName = pq.FullName;
                // load default page setting.
                _pageSetting = new LocalReportPageSettings();
            }
            else
            {
                _printerName = string.Empty;
                // default
                _pageSetting = new LocalReportPageSettings();
            }
        }
コード例 #2
0
        /// <summary>
        /// Print Report to specificed printer.
        /// </summary>
        /// <param name="rptViewer">The instance of Report Viewer Control.</param>
        /// <param name="printerName">The target printer name.</param>
        /// <param name="fromPage">-1 for print all</param>
        /// <param name="toPage">-1 for print all</param>
        /// <param name="noOfCopies">The Number of Copies.</param>
        /// <returns>Returns instance of RdlcPrintResult.</returns>
        public static RdlcPrintResult PrintTo(this ReportViewer rptViewer,
                                              string printerName,
                                              int fromPage     = -1, int toPage = -1,
                                              short noOfCopies = 1)
        {
            RdlcPrintResult result = new RdlcPrintResult();

            result.Success = false;

            if (string.IsNullOrWhiteSpace(printerName))
            {
                result.Message = "No printer selected.";

                RdlcMessageService.Instance.SendMessage(result.Message);

                return(result);
            }

            if (null == rptViewer.LocalReport ||
                null == rptViewer.LocalReport.DataSources ||
                rptViewer.LocalReport.DataSources.Count <= 0)
            {
                result.Message = "Report is not loaded or report has no data.";

                RdlcMessageService.Instance.SendMessage(result.Message);

                return(result);
            }

            LocalReportRenderer prt = null;

            try
            {
                LocalReport        lr       = rptViewer.LocalReport;
                ReportPageSettings settings = lr.GetDefaultPageSettings();

                if (null == settings)
                {
                    result.Message = "Cannot get page settings.";

                    RdlcMessageService.Instance.SendMessage(result.Message);

                    return(result);
                }

                #region Assign page setting

                LocalReportPageSettings pageSettings = new LocalReportPageSettings();

                if (!settings.IsLandscape)
                {
                    pageSettings.PageHeight = Convert.ToDouble(
                        (double)settings.PaperSize.Height / (double)100);
                    pageSettings.PageWidth = Convert.ToDouble(
                        (double)settings.PaperSize.Width / (double)100);
                }
                else
                {
                    pageSettings.PageHeight = Convert.ToDouble(
                        (double)settings.PaperSize.Width / (double)100);
                    pageSettings.PageWidth = Convert.ToDouble(
                        (double)settings.PaperSize.Height / (double)100);
                }
                pageSettings.MarginLeft = Convert.ToDouble(
                    (double)settings.Margins.Left / (double)100);
                pageSettings.MarginRight = Convert.ToDouble(
                    (double)settings.Margins.Right / (double)100);
                pageSettings.MarginTop = Convert.ToDouble(
                    (double)settings.Margins.Top / (double)100);
                pageSettings.MarginBottom = Convert.ToDouble(
                    (double)settings.Margins.Bottom / (double)100);

                //pageSettings.MarginLeft = 0;
                //pageSettings.MarginRight = 0;
                //pageSettings.MarginTop = 0;
                //pageSettings.MarginBottom = 0;

                pageSettings.Landscape = settings.IsLandscape;

                pageSettings.FromPage = fromPage;
                pageSettings.ToPage   = toPage;

#if WYSIWYG
                // Read Screen Resolution
                int dx, dy;
                System.Drawing.Graphics g = rptViewer.CreateGraphics();
                try
                {
                    dx = Convert.ToInt32(g.DpiX);
                    dy = Convert.ToInt32(g.DpiY);
                }
                finally
                {
                    g.Dispose();
                }
                pageSettings.DpiX = dx;
                pageSettings.DpiY = dy;

                // Create dialog and re read resolution.
                System.Windows.Forms.PrintDialog pd = new System.Windows.Forms.PrintDialog();
                pd.PrinterSettings.PrinterName = printerName;
                System.Drawing.Printing.PrinterSettings ps = pd.PrinterSettings;

                pageSettings.PrintDpiX = ps.DefaultPageSettings.PrinterResolution.X;
                pageSettings.PrintDpiY = ps.DefaultPageSettings.PrinterResolution.Y;
#endif
                #endregion

                prt = new LocalReportRenderer();
                prt.Print(lr, printerName, pageSettings, noOfCopies);

                result.Success = true;
                result.Message = "Print Success.";
                RdlcMessageService.Instance.SendMessage(result.Message);
            }
            catch (Exception ex)
            {
                result.Message = ex.ToString();
            }
            finally
            {
                if (null != prt)
                {
                    prt.Dispose();
                }
                prt = null;
            }

            return(result);
        }