【发布时间】:2019-02-24 20:39:16
【问题描述】:
我想在不打开打印对话框的情况下从 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: 没有应用程序与此操作的指定文件关联
缺少什么?
请建议如何解决这个问题。
【问题讨论】:
-
你安装了什么程序来打印 pdfs?
-
我没有使用任何程序。我需要任何带有此代码的程序吗?
-
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 + "\"";"?
标签: c# .net winforms file printing