Распечатать PDF-файл, не открывая Print Dialog, используя приложение Windows Form - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу напечатать файл PDF (URL) из приложения Windows, не открывая диалоговое окно печати. ​​

Я пробовал код ниже

        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 голосов
/ 01 октября 2018

Я считаю, что для печати 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...