使用C#windows中的ReportViewer打印PDF

时间:2015-04-12 16:53:57

标签: c# .net printing reportviewer

这是我创建的PDF代码,它将打开PDF文档。

 public void createPDF(string Reportpath, ReportViewer RV)
        {
            Warning[] warnings;
            string[] streamids;
            string mimeType = string.Empty;
            string encoding = string.Empty;
            string extension = string.Empty;

            byte[] bytes = RV.LocalReport.Render("pdf", null, out mimeType, out encoding, out extension, out streamids, out warnings);
            try
            {
                FileStream fs = new FileStream(Reportpath, FileMode.Create);                    
                Thread.Sleep(1000);
                fs.Write(bytes, 0, bytes.Length);
                fs.Close();
                Thread.Sleep(1000);
                System.Diagnostics.Process.Start(Reportpath); 
            }
            catch (Exception ex)
            {
                MessageBox.Show("Report could not be created...\n" + ex.Message);
            }
        }

而不是打开我需要使用reportviewer或任何其他方式直接打印pdf来打印该pdf文档??。

2 个答案:

答案 0 :(得分:1)

我认为this MSDN article为您的问题提供了一个很好的解决方案

答案 1 :(得分:0)

通过以下链接获得了一些想法

http://www.codeproject.com/Tips/598424/How-to-Silently-Print-PDFs-using-Adobe-Reader-and

将pdf发送到adobe reader打印....

public static Boolean PrintPDFs(string pdfFileName)
        {
            try
            {
                Process proc = new Process();
                proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                proc.StartInfo.Verb = "print";

                //Define location of adobe reader/command line
                //switches to launch adobe in "print" mode
                proc.StartInfo.FileName = 
                  @"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe";
                proc.StartInfo.Arguments = String.Format(@"/p /h {0}", pdfFileName);
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.CreateNoWindow = true;

                proc.Start();
                proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                if (proc.HasExited == false)
                {
                    proc.WaitForExit(10000);
                }

                proc.EnableRaisingEvents = true;

                proc.Close();
                KillAdobe("AcroRd32");
                return true;
            }
            catch
            {
                return false;
            }
        }