public static void SilentPrint(string reportPath, string parameters, string printerName = null) { var rdlViewer = new fyiReporting.RdlViewer.RdlViewer(); rdlViewer.Visible = false; rdlViewer.SourceFile = new Uri(reportPath); rdlViewer.Parameters = parameters; rdlViewer.Rebuild(); var pd = new PrintDocument(); pd.DocumentName = rdlViewer.SourceFile.LocalPath; pd.PrinterSettings.FromPage = 1; pd.PrinterSettings.ToPage = rdlViewer.PageCount; pd.PrinterSettings.MaximumPage = rdlViewer.PageCount; pd.PrinterSettings.MinimumPage = 1; pd.DefaultPageSettings.Landscape = rdlViewer.PageWidth > rdlViewer.PageHeight; pd.PrintController = new StandardPrintController(); // convert pt to hundredths of an inch. pd.DefaultPageSettings.PaperSize = new PaperSize( "", (int)((rdlViewer.PageWidth / 72.27) * 100), (int)((rdlViewer.PageHeight / 72.27) * 100)); if (!string.IsNullOrWhiteSpace(printerName) && printerName != SET_DEFAULT_PRINTER) { pd.DefaultPageSettings.PrinterSettings.PrinterName = printerName; } try { if (pd.PrinterSettings.PrintRange == PrintRange.Selection) { pd.PrinterSettings.FromPage = rdlViewer.PageCurrent; } rdlViewer.Print(pd); } catch (Exception ex) { #if !DEBUG const string rdlreaderlog = "RdlReaderLog.txt"; if (!File.Exists(rdlreaderlog)) { File.Create(rdlreaderlog).Dispose(); } File.AppendAllLines( rdlreaderlog, new[] { string.Format("[{0}] {1}", DateTime.Now.ToString("dd.MM.yyyy H:mm:ss"), ex.Message) }); #endif Debug.WriteLine(Strings.RdlReader_ShowC_PrintError + ex.Message); } }