任务:
- 以编程方式打印PDF文件
- 使用固定的打印机
- 不要让用户执行多个按钮点击
- 做到无声 - 越少越好
- 在客户端完成
使用Forms.WebBrowser
如果我们安装了Adobe Reader,则可以使用插件在Web浏览器中显示PDF。通过此解决方案,我们可以获得一个漂亮的预览,并且使用webbrowserControlName.Print()触发控件打印其内容。
问题 - 我们仍然需要PrintDialog。
使用启动参数启动AcroRd32.exe
以下CMD命令允许我们使用Adobe Reader打印我们的PDF。
InsertPathTo..\AcroRd32.exe /t "C:\sample.pdf" "\printerNetwork\printerName"
问题 - 我们需要AcroRd32.exe的绝对路径 | 会打开一个Adobe Reader窗口,并且必须在打印任务准备就绪之前保持打开状态。
使用Windows预设
Process process = new Process();
process.StartInfo.FileName = pathToPdf;
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "\"" + printerName + "\"";
process.Start();
process.WaitForInputIdle();
process.Kill();
问题 - 打印完成后仍会弹出Adobe Reader窗口,但通常会自动关闭。
解决方案 - 说服客户使用Foxit Reader(不要使用最后两行代码)。
将PDF页面转换为Drawing.Image
我不知道如何用代码实现,但是一旦这个工作完成,其余的就轻而易举了。Printing.PrintDocument可以满足所有需求。
有人有什么想法可以从这些PDF中获取一些Drawing.Image,或者另一种方法如何做到呢?
最好的问候, Max