C# 使用windows窗体应用程序在不打开“打印”对话框的情况下打印pdf文件

C# 使用windows窗体应用程序在不打开“打印”对话框的情况下打印pdf文件,c#,.net,winforms,file,printing,C#,.net,Winforms,File,Printing,我想在不打开打印对话框的情况下从windows应用程序打印PDF文件(url) 我试过下面的代码 string pdfUrl="mysite.com/test.pdf"; string printerName = "Microsoft Print To PDF"; using (var client = new System.Net.WebClient()) { client.Proxy.Credential

我想在不打开打印对话框的情况下从windows应用程序打印PDF文件(url)

我试过下面的代码

        string pdfUrl="mysite.com/test.pdf";
        string printerName = "Microsoft Print To PDF";
        using (var client = new System.Net.WebClient())
        {
            client.Proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
            client.DownloadFile(pdfUrl, filePath);
        }

        ProcessStartInfo info = new ProcessStartInfo();
        info.Verb = "print";
        info.FileName = filePath;
        info.Arguments = "\"" + printerName + "\"";
        info.UseShellExecute = true;
        info.CreateNoWindow = true;
        info.WindowStyle = ProcessWindowStyle.Hidden;
        info.WorkingDirectory = Path.GetDirectoryName(filePath);

        Process p = new Process();
        p.StartInfo = info;
        p.Start();

        //p.WaitForInputIdle();
        //System.Threading.Thread.Sleep(3000);
        //if (false == p.CloseMainWindow())
        //    p.Kill();
但是在p.Start()中出错吼叫 System.ComponentModel.Win32Exception:没有应用程序与此操作的指定文件关联

少了什么


请建议如何解决此问题。

我的意见是,您应该使用任何第三方库来打印PDF。 我们正在使用以下C#PDF库

是的,这是商业图书馆,所以我不知道我是否有权在这里放置链接

以下是无需任何用户交互即可打印PDF的代码:

public void PrintPdf()
{
    var doc = PdfDocument.Load("c:\test.pdf");
    var printDoc = new PdfPrintDocument(doc);
    PrintController printController = new StandardPrintController();
    printDoc.PrintController = printController;
    printDoc.Print(); // Print PDF document
}

我的意见是,您应该使用任何第三方库来打印PDF。 我们正在使用以下C#PDF库

是的,这是商业图书馆,所以我不知道我是否有权在这里放置链接

以下是无需任何用户交互即可打印PDF的代码:

public void PrintPdf()
{
    var doc = PdfDocument.Load("c:\test.pdf");
    var printDoc = new PdfPrintDocument(doc);
    PrintController printController = new StandardPrintController();
    printDoc.PrintController = printController;
    printDoc.Print(); // Print PDF document
}

你安装了什么程序来打印PDF?我没有使用任何程序。我需要任何带有此代码的程序吗?Microsoft Edge是我机器PDF的默认启动器我已将其更改为acrobat reader。然后使用“Microsoft print To PDF”成功打印,但当我将打印机命名为“Microsoft XPS Document Writer”时,它也使用“Microsoft print To PDF”打印,我已将其更改为acrobat reader。然后使用打印机“Microsoft print To PDF”打印成功,但当我将打印机命名为“Microsoft XPS Document Writer”时,它也会使用打印机“Microsoft print To PDF”打印。如何将文档打印到任何打印机“info.Arguments=“\”“+printerName+”\”“;”?您安装了什么程序来打印PDF?我没有使用任何程序。我需要任何带有此代码的程序吗?Microsoft Edge是我机器PDF的默认启动器我已将其更改为acrobat reader。然后使用“Microsoft print To PDF”成功打印,但当我将打印机命名为“Microsoft XPS Document Writer”时,它也使用“Microsoft print To PDF”打印,我已将其更改为acrobat reader。然后使用打印机“Microsoft print To PDF”打印成功,但当我将打印机命名为“Microsoft XPS Document Writer”时,它也会使用打印机“Microsoft print To PDF”打印。如何将文档打印到任何打印机“info.Arguments=“\”“+printerName+”\”“;”?