|
@@ -1,13 +1,17 @@
|
|
|
using CefSharp;
|
|
using CefSharp;
|
|
|
using System;
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
|
|
|
+using System.Drawing;
|
|
|
using System.Text.RegularExpressions;
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
+using System.Windows.Forms;
|
|
|
|
|
|
|
|
namespace UAS_Web.tool
|
|
namespace UAS_Web.tool
|
|
|
{
|
|
{
|
|
|
class RequestHandler : IRequestHandler
|
|
class RequestHandler : IRequestHandler
|
|
|
{
|
|
{
|
|
|
public event Action<byte[]> NotifyMsg;
|
|
public event Action<byte[]> NotifyMsg;
|
|
|
|
|
+
|
|
|
|
|
+ PrinterList print;
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// 拦截指定请求
|
|
/// 拦截指定请求
|
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -19,13 +23,14 @@ namespace UAS_Web.tool
|
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
|
IResponseFilter IRequestHandler.GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
|
|
IResponseFilter IRequestHandler.GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
|
|
|
{
|
|
{
|
|
|
|
|
+ MessageFilter filter;
|
|
|
switch (request.Url.Substring(request.Url.LastIndexOf("/") + 1))
|
|
switch (request.Url.Substring(request.Url.LastIndexOf("/") + 1))
|
|
|
{
|
|
{
|
|
|
case "default?type=printer":
|
|
case "default?type=printer":
|
|
|
- //MessageFilter filter = FilterManager.CreateFilter(request.Identifier.ToString()) as MessageFilter;
|
|
|
|
|
- //return filter;
|
|
|
|
|
|
|
+ filter = FilterManager.CreateFilter(request.Identifier.ToString()) as MessageFilter;
|
|
|
|
|
+ return filter;
|
|
|
case "zplPrint.action":
|
|
case "zplPrint.action":
|
|
|
- MessageFilter filter = FilterManager.CreateFilter(request.Identifier.ToString()) as MessageFilter;
|
|
|
|
|
|
|
+ filter = FilterManager.CreateFilter(request.Identifier.ToString()) as MessageFilter;
|
|
|
return filter;
|
|
return filter;
|
|
|
default:
|
|
default:
|
|
|
break;
|
|
break;
|
|
@@ -45,34 +50,56 @@ namespace UAS_Web.tool
|
|
|
/// <param name="receivedContentLength"></param>
|
|
/// <param name="receivedContentLength"></param>
|
|
|
void IRequestHandler.OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
|
|
void IRequestHandler.OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
|
|
|
{
|
|
{
|
|
|
|
|
+ MessageFilter filter;
|
|
|
|
|
+ string str;
|
|
|
switch (request.Url.Substring(request.Url.LastIndexOf("/") + 1))
|
|
switch (request.Url.Substring(request.Url.LastIndexOf("/") + 1))
|
|
|
{
|
|
{
|
|
|
case "default?type=printer":
|
|
case "default?type=printer":
|
|
|
- //MessageFilter filter = FilterManager.GetFileter(request.Identifier.ToString()) as MessageFilter;
|
|
|
|
|
- //string str = System.Text.Encoding.UTF8.GetString(filter.dataAll.ToArray());
|
|
|
|
|
|
|
+ print = new PrinterList(browser) { StartPosition = FormStartPosition.CenterScreen };
|
|
|
|
|
+ print.Controls["Confirm"].Click += RequestHandler_Click;
|
|
|
|
|
+ print.ShowDialog();
|
|
|
|
|
+ filter = FilterManager.GetFileter(request.Identifier.ToString()) as MessageFilter;
|
|
|
|
|
+ str = System.Text.Encoding.UTF8.GetString(filter.dataAll.ToArray());
|
|
|
//filter_NotifyData(filter.dataAll.ToArray());
|
|
//filter_NotifyData(filter.dataAll.ToArray());
|
|
|
- //Console.WriteLine(str);
|
|
|
|
|
|
|
+ Console.WriteLine(str);
|
|
|
break;
|
|
break;
|
|
|
case "zplPrint.action":
|
|
case "zplPrint.action":
|
|
|
- MessageFilter filter = FilterManager.GetFileter(request.Identifier.ToString()) as MessageFilter;
|
|
|
|
|
- string str = System.Text.Encoding.UTF8.GetString(filter.dataAll.ToArray());
|
|
|
|
|
- filter_NotifyData(filter.dataAll.ToArray());
|
|
|
|
|
|
|
+ filter = FilterManager.GetFileter(request.Identifier.ToString()) as MessageFilter;
|
|
|
|
|
+ str = System.Text.Encoding.UTF8.GetString(filter.dataAll.ToArray());
|
|
|
|
|
+ Console.WriteLine(str);
|
|
|
|
|
+
|
|
|
|
|
+ PrintHelper.SendStringToPrinter(print.Controls["Printer"].Text, "");
|
|
|
|
|
+ //filter_NotifyData(filter.dataAll.ToArray());
|
|
|
Dictionary<string, object> data = ToDictionary(str);
|
|
Dictionary<string, object> data = ToDictionary(str);
|
|
|
string PrintCode = data["data"].ToString();
|
|
string PrintCode = data["data"].ToString();
|
|
|
List<string> PrintList = new List<string>();
|
|
List<string> PrintList = new List<string>();
|
|
|
- //int CutPoint = 0;
|
|
|
|
|
- for (int i = 0; i < Regex.Matches(PrintCode, @"^XA").Count; i++)
|
|
|
|
|
|
|
+ int PrintTime = Regex.Matches(PrintCode, "XA").Count;
|
|
|
|
|
+ for (int i = 0; i < PrintTime; i++)
|
|
|
{
|
|
{
|
|
|
- PrintList.Add(PrintCode.Substring(0,PrintCode.IndexOf("^XZ")));
|
|
|
|
|
- PrintCode = PrintCode.Substring(PrintCode.IndexOf("^XZ")+1);
|
|
|
|
|
|
|
+ PrintList.Add(PrintCode.Substring(0, PrintCode.IndexOf("XZ") + 2));
|
|
|
|
|
+ PrintCode = PrintCode.Substring(PrintCode.IndexOf("XZ") + 2);
|
|
|
|
|
+ }
|
|
|
|
|
+ for (int i = 0; i < PrintList.Count; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ PrintHelper.SendStringToPrinter(print.Controls["Printer"].Text, PrintList[i]);
|
|
|
}
|
|
}
|
|
|
- //Console.WriteLine(str);
|
|
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void RequestHandler_Click(object sender, EventArgs e)
|
|
|
|
|
+ {
|
|
|
|
|
+ print.PrintDoc.PrinterSettings.PrinterName = print.Controls["Printer"].Text;
|
|
|
|
|
+ Graphics gr = print.PrintDoc.PrinterSettings.CreateMeasurementGraphics();
|
|
|
|
|
+ print.browser.MainFrame.ExecuteJavaScriptAsync("(function(value) {dpi=value})('" + gr.DpiX + "')");
|
|
|
|
|
+ print.browser.FocusedFrame.ExecuteJavaScriptAsync("console.log(this);");
|
|
|
|
|
+ print.browser.FocusedFrame.ExecuteJavaScriptAsync("onGridItemClick();");
|
|
|
|
|
+
|
|
|
|
|
+ print.Close();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
void filter_NotifyData(byte[] data)
|
|
void filter_NotifyData(byte[] data)
|
|
|
{
|
|
{
|
|
|
if (NotifyMsg != null)
|
|
if (NotifyMsg != null)
|