2015-09-14 41 views
1

我试图附加PDF文件的打印对话框,但我还没有发现这样做的方式。附加一个PDF文件的打印对话框

我使用WPF应用程序,我有一些代码与印刷相关的,看起来像这样:

private void Imprimir() 
    { 
     try 
     { 
      FixedDocument document = null; 
      PageContent pageContent = null; 
      FixedPage fixedPage = null; 

      PrintDialog printDlg = new PrintDialog(); 
      if (printDlg.ShowDialog() != true) 
       return; 
      document.DocumentPaginator.PageSize = new System.Windows.Size(1400, 1450); 
      fixedPage.Width = document.DocumentPaginator.PageSize.Width; 
      fixedPage.Height = document.DocumentPaginator.PageSize.Height; 
      fixedPage.Margin = new Thickness(96, 96, 0, 0); 
      fixedPage.Children.Add(this); 

      ((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage); 
      document.Pages.Add(pageContent); 
      printDlg.PrintDocument(document.DocumentPaginator, "Impresion Cierre"); 
      fixedPage.Children.Clear(); 

     } 
     catch (Exception ex) 
     { 
      System.Windows.MessageBox.Show(ex.Message); 
     } 
    } 

但是,通过这种方式,我只是打印UI元素加入到固定页面。 我在寻找其他的代码,但我什么也没找到。 所以,我不知道是否可以将PDF文件本地存储到打印对话框?

感谢您的帮助......

回答

0

那么你可以使用PrintDialog类无法做到这一点。有几个选项,这取决于你的目标:

 var printQueue = LocalPrintServer.GetDefaultPrintQueue(); 
     using (var input = File.OpenRead("path_to_your.pdf")) { 
      using (var job = printQueue.AddJob()) { 
       using (var output = job.JobStream) { 
        input.CopyTo(output); 
       } 
      } 
     } 

会悄悄地发送打印作业时您的文件下载到本地打印队列。打印作业是可配置的。

另外,您可以使用Adobe Reader来处理,对于您(或安装的用户的机器上的另一个pdf阅读器),但启动过程与路径到PDF的文件名和动词=“打印”。

还有一个选择是使用第三方工具(如Ghostscript的),它可以帮你。

+0

好吧,那我真正需要的是让PDF文件,然后显示一个打印对话框至极必须包含PDF,因此用户将不得不选择打印机最后打印该文档... –