我试图解决这个问题将近2天.网上有很多或更少的好解决方案,但没有一个完美适合我的任务.
使用Forms.WebBrowser执行此操作
如果我们安装了Adobe Reader,则有一个插件可以在webbrowser中显示PDF.有了这个解决方案,我们有一个很好的预览和webbrowserControlName.Print()我们可以触发控件来打印其内容.
问题 - 我们还有一个PrintDialog.
使用start参数启动AcroRd32.exe
以下CMD命令让我们使用Adobe Reader打印PDF.
InsertPathTo ..\AcroRd32.exe/t"C:\ sample.pdf""\ printerNetwork\printerName"
问题 - 我们需要AcroRd32.exe的绝对路径 有一个Adobe Reader Window打开,必须打开它,直到打印任务准备就绪.
使用Windows预设
Process process = new Process();
process.StartInfo.FileName = pathToPdf;
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "\"" + printerName + "\"";
process.Start();
process.WaitForInputIdle();
process.Kill();
Run Code Online (Sandbox Code Playgroud)
问题 - 仍然有一个Adobe Reader窗口弹出,但在打印完成后它通常会自动关闭.
解决方案 - 说服客户使用福昕阅读器(不要使用最后两行代码).
将PDF页面转换为Drawing.Image
我不知道怎么用代码来做这件事,但是当我让它上班时剩下的只是小菜一碟.Printing.PrintDocument可以满足所有需求.
最诚挚的问候,马克斯