|
|
这个程序是使用的windowsForm开发的,非常简单的流程。本地开启一个websocket服务,接收浏览器的打印内容。然后,使用windowsForm的一个WebBrowser组件渲染打印内容。最后,调用组件的Print方法,发送到默认打印机打印。
下面是代码:
- private void StartWebSocket()
- {
- server = new WebSocketServer("ws://0.0.0.0:5597");
- server.Start(socket =>
- {
- socket.OnOpen = () => Console.WriteLine("Open!");
- socket.OnClose = () => Console.WriteLine("Close!");
- socket.OnMessage = message =>
- {
- PrintHTML(message);
- };
- });
- }
- private void PrintHTML(string html)
- {
- webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
- webBrowser1.DocumentText = html;
- }
- private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
- {
- var browser = sender as WebBrowser;
- // 检查文档是否完全加载
- if (browser.ReadyState == WebBrowserReadyState.Complete)
- {
- // 取消事件,避免多次触发
- browser.DocumentCompleted -= WebBrowser1_DocumentCompleted;
- // 打印文档
- //RemoveHeaderAndFooterForPrinting();
- try
- {
- browser.Print();
- }
- catch (Exception ex)
- {
- MessageBox.Show("打印失败: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- }
复制代码 刚开始,以为是操作了注册表,写Ie的默认配置导致的。后来注释了代码,并且加了异常捕获。程序执行到Print的是,还是会被终止掉。打印机的打印队列,没有打印任务出现。窗体终止前,打印面单已经被渲染出来了。
这个目前怎么解决?
|
|