Wpf 将PDF文件附加到打印对话框

Wpf 将PDF文件附加到打印对话框,wpf,pdf,printdialog,Wpf,Pdf,Printdialog,我正在尝试将PDF文件附加到打印对话框,但我还没有找到方法 我正在使用WPF应用程序,我有一些与打印相关的代码,如下所示: private void Imprimir() { try { FixedDocument document = null; PageContent pageContent = null; FixedPage fixedPage = null;

我正在尝试将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文件添加到打印对话框


感谢您的帮助……

您不能使用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的路径为FileName和Verb=“print”


还有一个选择是使用第三方工具(如ghostscript),它可以帮助您实现这一点。

您无法使用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的路径为FileName和Verb=“print”


还有一个选择是使用第三方工具(如ghostscript),它可以帮助您实现这一点。

我真正需要的是获取PDF文件,然后显示一个打印对话框,其中必须包含PDF,因此用户必须选择打印机并最终打印此文档……嗯,我真正需要的是获取PDF文件,然后显示一个打印对话框,其中必须包含PDF,因此用户必须选择打印机并最终打印此文档。。。