使用Windows窗体应用程序无需打开打印对话框即可打印pdf文件

时间:2018-09-20 13:50:45

标签: 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.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:没有应用程序与此操作的指定文件相关联

缺少什么?

请提出解决方法。

1 个答案:

答案 0 :(得分:1)

我的意见是,您应该使用任何第三方库来打印PDF。 我们正在使用以下C#PDF库 https://pdfium.patagames.com/c-pdf-library/

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

以下是无需任何用户交互即可打印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
}