我在WinForm 编程时一直有一个困扰很久的问题,有很多时候我们需要静默打印 或者不想使用默认的UI 进行打印设置
这个时候我的想法如下
1. 获取全部打印机
2.获取打印机能打什么样的纸
3.将打印机设置传入并打印
首选用到的打印机设置类
System.Drawing.Printing.PrinterSettings
System.Drawing.Printing.PageSettings
第一步 找到所有打印机 主要使用这个属性 这个属性还是静态的
PrinterSettings.InstalledPrinters
第二步 找到你想要的那个打印机(代码忽略)
第三步 设置打印机名称(必须一模一样)
PrinterSettings settings = new PrinterSettings();
settings.PrinterName = PrintName;//打印机名称
第四步 设置打印机的纸张(在这里其实我遇到一些困难 发现如果自己输入纸张宽高 搞自定义有很多打印机不支持 最后还是找到了解决办法)
循环打印机支持的纸张 然后找到想要的打印机支持的纸的名字 这样做错误就很少了 设置项也很少 并且对于多纸张支持打印机可以对纸盒进行自动选择
PageSettings pageSettings = new PageSettings();
foreach (PaperSize data in settings.PaperSizes)
{if (data.PaperName == printpagename){pageSettings.PaperSize = data;}}
最后 进行打印
view.Print(settings, pageSettings);
当然这里我使用了一款支持打印机设置的浏览器引擎还是chromium 内核(确实是找了很久)
支持完全静默 不用显示 直接使用引擎进行打印需要使用 (ThreadRunner) 终于可以告别IE内核了 个人感觉比CEF要好用点 毕竟是收费的
EO.WebBrowser
附上nuget 连接
EO.WebBrowser 20.1.45www.nuget.org