我想从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:没有应用程序与此操作的指定文件相关联
缺少什么?
请提出解决方法。
答案 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
}