Browse Source

zebra打印页面添加resolution参数的cookie

sunyj 8 years ago
parent
commit
3acf2048ae

+ 80 - 71
src/main/webapp/WEB-INF/views/zebra.html

@@ -1,71 +1,80 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="UTF-8">
-</head>
-<body style="background-color: #D8D8D8; font-size: 24px;">
-	<div class="navbar navbar-inverse " role="navigation">
-		<div class="container">
-			<div class="navbar-header">
-				<button type="button" class="navbar-toggle collapsed"
-					data-toggle="collapse" data-target=".navbar-collapse">
-					<span class="sr-only">Toggle navigation</span> <span
-						class="icon-bar"></span> <span class="icon-bar"></span> <span
-						class="icon-bar"></span>
-				</button>
-				<a class="navbar-brand" href="#"><p style="font-size: 150%;">Zebra
-						Browser Print</p></a>
-			</div>
-			<!-- /navbar-header -->
-		</div>
-		<!-- /container -->
-	</div>
-	<!-- /navigation -->
-	<div class="container" style="width: 500px">
-		<div id="main">
-			<div id="printer_data_loading" style="display: none">
-				<span id="loading_message">Loading Printer Details...</span><br />
-				<div class="progress" style="width: 100%">
-					<div class="progress-bar progress-bar-striped active"
-						role="progressbar" aria-valuenow="100" aria-valuemin="0"
-						aria-valuemax="100" style="width: 100%"></div>
-				</div>
-			</div>
-			<!-- /printer_data_loading -->
-			<div id="printer_details" style="display: none">
-				<span id="selected_printer">No data</span>
-				<button type="button" class="btn btn-success"
-					onclick="changePrinter()">Change</button>
-			</div>
-			<br />
-			<!-- /printer_details -->
-			<div id="printer_select" style="display: none">
-				Zebra Printer Options<br /> Printer: <select id="printers"></select>
-			</div>
-			<!-- /printer_select -->
-			<div id="print_form" style="display: none">
-				Enter Name: <input type="text" id="entered_name"></input> <br /> <br />
-				<button type="button" class="btn btn-lg btn-primary"
-					onclick="sendData();" value="Print">Print Label</button>
-			</div>
-			<!-- /print_form -->
-		</div>
-		<!-- /main -->
-		<div id="error_div" style="width: 500px; display: none">
-			<div id="error_message"></div>
-			<button type="button" class="btn btn-lg btn-success"
-				onclick="trySetupAgain();">Try Again</button>
-		</div>
-		<!-- /error_div -->
-	</div>
-	<!-- /container -->
-</body>
-<link href="resources/lib/bootstrap/css/bootstrap.min.css"
-	rel="stylesheet">
-<link href="resources/lib/bootstrap/css/bootstrap-theme.min.css"
-	rel="stylesheet">
-<script type="text/javascript" src="resources/lib/jquery/jquery.min.js"></script>
-<script type="text/javascript"
-	src="resources/js/zebra/BrowserPrint-1.0.4.min.js"></script>
-<script type="text/javascript" src="resources/js/zebra/app.js"></script>
-</html>
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+</head>
+<body style="background-color: #D8D8D8; font-size: 24px;">
+	<div class="navbar navbar-inverse " role="navigation">
+		<div class="container">
+			<div class="navbar-header">
+				<button type="button" class="navbar-toggle collapsed"
+					data-toggle="collapse" data-target=".navbar-collapse">
+					<span class="sr-only">Toggle navigation</span> <span
+						class="icon-bar"></span> <span class="icon-bar"></span> <span
+						class="icon-bar"></span>
+				</button>
+				<a class="navbar-brand" href="#"><p style="font-size: 150%;">Zebra
+						Browser Print</p></a>
+			</div>
+			<!-- /navbar-header -->
+		</div>
+		<!-- /container -->
+	</div>
+	<!-- /navigation -->
+	<div class="container" style="width: 500px">
+		<div id="main">
+			<div id="printer_data_loading" style="display: none">
+				<span id="loading_message">Loading Printer Details...</span><br />
+				<div class="progress" style="width: 100%">
+					<div class="progress-bar progress-bar-striped active"
+						role="progressbar" aria-valuenow="100" aria-valuemin="0"
+						aria-valuemax="100" style="width: 100%"></div>
+				</div>
+			</div>
+			<!-- /printer_data_loading -->
+			<div id="printer_details" style="display: none">
+				<span id="selected_printer">No data</span>
+				<button type="button" class="btn btn-success"
+					onclick="changePrinter()">Change</button>
+			</div>
+			<br />
+			<!-- /printer_details -->
+			<div id="printer_select" style="display: none">
+				Printer: <select id="printers"></select>
+			</div>
+			<!-- /resolution_details -->
+			<div id="resolution_select">
+				Resolution: <select id="resolution">
+					<option selected value="203">203 dpi</option>
+					<option value="300">300 dpi</option>
+					<option value="600">600 dpi</option>
+					<option value="1200">1200 dpi</option>
+				</select>
+			</div>
+			<!-- /printer_select -->
+			<div id="print_form" style="display: none">
+				<button type="button" class="btn btn-lg btn-primary"
+					onclick="sendData();" value="Print">Print Label</button>
+			</div>
+			<!-- /print_form -->
+		</div>
+		<!-- /main -->
+		<div id="error_div" style="width: 500px; display: none">
+			<div id="error_message"></div>
+			<button type="button" class="btn btn-lg btn-success"
+				onclick="trySetupAgain();">Try Again</button>
+		</div>
+		<!-- /error_div -->
+	</div>
+	<!-- /container -->
+</body>
+<link href="resources/lib/bootstrap/css/bootstrap.min.css"
+	rel="stylesheet">
+<link href="resources/lib/bootstrap/css/bootstrap-theme.min.css"
+	rel="stylesheet">
+<script type="text/javascript" src="resources/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript"
+	src="resources/js/zebra/BrowserPrint-1.0.4.min.js"></script>
+<script type="text/javascript" src="resources/js/zebra/util.js"></script>
+<script type="text/javascript" src="resources/js/zebra/app.js"></script>
+</html>

+ 64 - 54
src/main/webapp/resources/js/zebra/app.js

@@ -2,10 +2,14 @@ var available_printers = null;
 var selected_category = null;
 var default_printer = null;
 var selected_printer = null;
-var format_start = "^XA^LL200^FO80,50^A0N36,36^FD";
-var format_end = "^FS^XZ";
-var zpl = "^XA^LH220,0^FO0,0^A0,16^BY1,2.5,16^BCN,30,Y,N,N^FD4493890000170413000000^FS^FO0,55^A0,16^FD-10拼-两层-ENIG-联迪代工供应商^FS^FO0,80^A0,16^BY1,2.5,16^BCN,30,Y,N,N^FDYY01001632-103^FS^XZ";
 var default_mode = true;
+// get zpl from the url
+var getZPLUrl = "zebra/generateZPL";
+var resolutionCookie = getCookie("resolution");
+
+if (resolutionCookie) {
+	$('#resolution').val(resolutionCookie);
+}
 
 $(document).ready(setup_web_print);
 
@@ -18,54 +22,52 @@ function setup_web_print() {
 	selected_category = null;
 	default_printer = null;
 
-	BrowserPrint.getDefaultDevice('printer',
-			function(printer) {
-				default_printer = printer
-				if ((printer != null) && (printer.connection != undefined)) {
-					selected_printer = printer;
-					var printer_details = $('#printer_details');
-					var selected_printer_div = $('#selected_printer');
+	BrowserPrint.getDefaultDevice('printer', function(printer) {
+		default_printer = printer
+		if ((printer != null) && (printer.connection != undefined)) {
+			selected_printer = printer;
+			var printer_details = $('#printer_details');
+			var selected_printer_div = $('#selected_printer');
 
-					selected_printer_div.text("Using Default Printer: "
-							+ printer.name);
-					hideLoading();
-					printer_details.show();
-					$('#print_form').show();
+			selected_printer_div.text("Default Printer: " + printer.name);
+			hideLoading();
+			printer_details.show();
+			$('#print_form').show();
 
-				}
-				BrowserPrint.getLocalDevices(function(printers) {
-					available_printers = printers;
-					var sel = document.getElementById("printers");
-					var printers_available = false;
-					sel.innerHTML = "";
-					if (printers != undefined) {
-						for (var i = 0; i < printers.length; i++) {
-							if (printers[i].connection == 'usb') {
-								var opt = document.createElement("option");
-								opt.innerHTML = printers[i].connection + ": "
-										+ printers[i].uid;
-								opt.value = printers[i].uid;
-								sel.appendChild(opt);
-								printers_available = true;
-							}
-						}
+		}
+		BrowserPrint.getLocalDevices(function(printers) {
+			available_printers = printers;
+			var sel = document.getElementById("printers");
+			var printers_available = false;
+			sel.innerHTML = "";
+			if (printers != undefined) {
+				for (var i = 0; i < printers.length; i++) {
+					if (printers[i].connection == 'usb') {
+						var opt = document.createElement("option");
+						opt.innerHTML = printers[i].connection + ": "
+								+ printers[i].uid;
+						opt.value = printers[i].uid;
+						sel.appendChild(opt);
+						printers_available = true;
 					}
+				}
+			}
 
-					if (!printers_available) {
-						showErrorMessage("No Zebra Printers could be found!");
-						hideLoading();
-						$('#print_form').hide();
-						return;
-					} else if (selected_printer == null) {
-						default_mode = false;
-						changePrinter();
-						$('#print_form').show();
-						hideLoading();
-					}
-				}, undefined, 'printer');
-			}, function(error_response) {
-				showBrowserPrintNotFound();
-			});
+			if (!printers_available) {
+				showErrorMessage("No Zebra Printers could be found!");
+				hideLoading();
+				$('#print_form').hide();
+				return;
+			} else if (selected_printer == null) {
+				default_mode = false;
+				changePrinter();
+				$('#print_form').show();
+				hideLoading();
+			}
+		}, undefined, 'printer');
+	}, function(error_response) {
+		showBrowserPrintNotFound();
+	});
 };
 function showBrowserPrintNotFound() {
 	showErrorMessage("An error occured while attempting to connect to your Zebra Printer. You may not have Zebra Browser Print installed, or it may not be running. Install Zebra Browser Print, or start the Zebra Browser Print Service, and try again.");
@@ -75,15 +77,24 @@ function sendData() {
 	showLoading("Printing...");
 	checkPrinterStatus(function(text) {
 		if (text == "Ready to Print") {
-			// selected_printer.send(format_start + $('#entered_name').val() +
-			// format_end, printComplete, printerError);
-			var generateZPLUrl = "zebra/generateZPL";
+			var resolution = $('#resolution').val();
+			if (resolution != resolutionCookie) {
+				setCookie("resolution", resolution, 365);
+			}
+			getZPLUrl += "?resolution=" + resolution;
 			$.ajax({
 				type : "POST",
-				url : generateZPLUrl,
+				url : getZPLUrl,
 				success : function(data) {
 					console.log(data);
-					selected_printer.send(data, printComplete, printerError);
+					if (!data.length) {
+						printerError("No ZPL");
+					} else {
+						for (var i = 0; i < data.length; i++) {
+							selected_printer.send(data[i], printComplete,
+									printerError);
+						}
+					}
 				},
 				error : function(XMLHttpRequest) {
 					console.log(XMLHttpRequest);
@@ -147,7 +158,6 @@ function showLoading(text) {
 };
 function printComplete() {
 	hideLoading();
-	alert("Printing complete");
 }
 function hideLoading() {
 	$('#printer_data_loading').hide();
@@ -190,4 +200,4 @@ function trySetupAgain() {
 	$('#error_div').hide();
 	setup_web_print();
 	// hideLoading();
-}
+}

+ 14 - 0
src/main/webapp/resources/js/zebra/util.js

@@ -0,0 +1,14 @@
+function getCookie(name) {
+	var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
+	if (arr = document.cookie.match(reg))
+		return unescape(arr[2]);
+	else
+		return null;
+}
+
+function setCookie(cname, cvalue, exdays) {
+	var d = new Date();
+	d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
+	var expires = "expires=" + d.toUTCString();
+	document.cookie = cname + "=" + cvalue + "; " + expires;
+}