UNPKG

digitickets.star-web-print

Version:

Javascript library for printing to Star Micronics printers supporting the WebPRNT interface.

362 lines (304 loc) 13 kB
<!DOCTYPE html> <!-- // // Star webPRNT Sample(レシートレター) // // Version 1.2.1 // // Copyright (C) 2015 STAR MICRONICS CO., LTD. All Rights Reserved. // --> <html> <head> <meta charset="UTF-8"> <meta http-equiv="Expires" content="86400"> <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> <title>Star webPRNT レシートレター</title> <link href="css/import.css" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="style.css" media="screen"> <link href="css/style_receiptLetter.css" rel="stylesheet" type="text/css"> <script type='text/javascript' src='js/StarWebPrintBuilder.js'></script> <script type='text/javascript' src='js/StarWebPrintTrader.js'></script> <script type='text/javascript'> function sendMessage(request) { showNowPrinting(); var url = 'http://localhost:8001/StarWebPRNT/SendMessage'; var trader = new StarWebPrintTrader({url:url}); trader.onReceive = function (response) { hideNowPrinting(); var msg = '- onReceive -\n\n'; if (response.traderSuccess == 'true') { msg += '印刷結果 : 成功\n'; } else { msg += '印刷結果 : 失敗\n'; msg += '状態 : [ ' if (trader.isCoverOpen ({traderStatus:response.traderStatus})) {msg += '\tカバーオープン,\n';} if (trader.isOffLine ({traderStatus:response.traderStatus})) {msg += '\tオフライン,\n';} // if (trader.isCompulsionSwitchClose({traderStatus:response.traderStatus})) {msg += '\tCompulsionSwitchClose,\n';} // if (trader.isEtbCommandExecute ({traderStatus:response.traderStatus})) {msg += '\tEtbCommandExecute,\n';} if (trader.isHighTemperatureStop ({traderStatus:response.traderStatus})) {msg += '\t高温検知停止,\n';} if (trader.isNonRecoverableError ({traderStatus:response.traderStatus})) {msg += '\t復帰不可能エラー,\n';} if (trader.isAutoCutterError ({traderStatus:response.traderStatus})) {msg += '\tカッターエラー,\n';} // if (trader.isBlackMarkError ({traderStatus:response.traderStatus})) {msg += '\tBlackMarkError,\n';} if (trader.isPaperEnd ({traderStatus:response.traderStatus})) {msg += '\t紙無しエラー,\n';} // if (trader.isPaperNearEnd ({traderStatus:response.traderStatus})) {msg += '\tPaperNearEnd,\n';} msg += ' ]\n'; } alert(msg); } trader.onError = function (response) { var msg = '- onError -\n\n'; msg += '\tStatus:' + response.status + '\n'; msg += '\tResponseText:' + response.responseText + '\n\n'; msg += 'Do you want to retry?\n'; var answer = confirm(msg); if (answer) { onSend(); } else { hideNowPrinting(); } } trader.sendMessage({request:request}); } function onSend() { var builder = new StarWebPrintBuilder(); var textArea = document.getElementById('textData'); var request = ''; request += builder.createInitializationElement(); var canvasPrint = document.getElementById('canvasPrint'); request += builder.createBitImageElement({context:canvasPrint.getContext('2d'), x:0, y:0, width:canvasPrint.width, height:canvasPrint.height}); request += builder.createTextElement({characterspace:0, international:'japan'}); request += builder.createTextElement({data:textArea.value}); request += builder.createCutPaperElement({feed:true}); sendMessage(request); } function createTextArea(){ var div_element = document.createElement("div"); div_element.innerHTML = '<textarea id="textData" rows="40" style="overflow: hidden;" wrap="hard">' document.getElementById("container").appendChild(div_element); } function check() { alert("abc"); } function changeLogo() { try { var paperWidth = document.getElementById('PaperWidth'); var selection = document.getElementById('LogoSelection'); var width = paperWidth.options[paperWidth.selectedIndex].value; var path = selection.options[selection.selectedIndex].value; var image = new Image(); image.src = 'img/' + width + '/' + path + '?' + new Date().getTime(); var canvasPrint = document.getElementById('canvasPrint'); var canvasShow = document.getElementById('canvasShow'); image.onload = function () { if (canvasPrint.getContext) { canvasPrint.width = image.width; canvasPrint.height = image.height; var contextPrint = canvasPrint.getContext('2d'); contextPrint.drawImage(image, 0, 0); } if (canvasShow.getContext) { var canvasWidth; if (width == '2inch') { canvasWidth = 200; } else { canvasWidth = 300; } var canvasRatio = image.width / canvasWidth; canvasShow.width = canvasWidth; canvasShow.height = image.height / canvasRatio; // canvasShow.height = image.height; var contextShow = canvasShow.getContext('2d'); contextShow.drawImage(image, 0, 0, canvasShow.width, canvasShow.height); } } image.onerror = function () { alert('Image file was not able to be loaded int the web server.'); } } catch (e) { alert(e.message); } } function changePaperWidth(PaperWidth) { var textArea = document.getElementById('textData'); if (PaperWidth.options[PaperWidth.selectedIndex].value == '2inch') { if (navigator.userAgent.indexOf("Android") != -1) { textArea.cols = 29; } else { textArea.cols = 30; } textArea.value = "\n" + " 毎度ありがとうございます!\n" + "静岡店:054-347-0112\n" + "\n" + " 領収証\n" + "\n" + "2016年1月1日 18時23分\n" + " 生ビール \\ 550\n" + " 笑顔 \\ 0\n" + " 激辛!麻婆豆腐 \\ 980\n" + " いい夫婦 \\ 1,122\n" + " 感謝 \\ 39\n" + " これからも \\ 0\n" + " 末長く \\ 888\n" + " 宜しくお願いします \\ 4,649\n" + "--------------------------------\n" + " 合計 \\ 8,117\n" + " 御預り金 \\10,000\n" + " おつり \\ 1,883\n" + "\n" + " 来週、焼肉おごるよ!\n" + "\n" + " No.777\n" + " 作成者: 星 太郎\n"; } else { textArea.cols = 44; textArea.value = "\n" + " 毎度ありがとうございます!\n" + " 静岡店:054-347-0112\n" + "\n" + " 領収証\n" + "\n" + "2016年1月1日 18時23分\n" + " K18 ホワイトゴールドネックレス \\ ?????\n" + " 今年で付き合って2回目の \\ 2\n" + " クリスマスだね★ \\ 1,225\n" + " 普段は恥ずかしくて言えないけど \\ 0\n" + " いつも手料理ありがとう♪ \\ 39\n" + " これからも末長く \\ 888\n" + " よろしくお願いします♪ \\ 4,649\n" + "------------------------------------------------\n" + " 合計 \\ 6,803\n" + " 御預り金 \\ 10,000\n" + " おつり \\ 3,197\n" + "\n" + "  暖かくなったら、韓国旅行行こうね★\n"; } changeLogo(); } function nowLoading(){ document.getElementById('form').style.display="block"; document.getElementById('overlay').style.display="none"; document.getElementById('nowLoadingWrapper').style.display="none"; } function showNowPrinting(){ document.getElementById('overlay').style.display="block"; document.getElementById('nowPrintingWrapper').style.display="table"; } function hideNowPrinting(){ document.getElementById('overlay').style.opacity= 0.0; document.getElementById('overlay').style.transition= "all 0.3s"; intimer = setTimeout(function (){ document.getElementById('overlay').style.display="none"; document.getElementById('overlay').style.opacity= 1; clearTimeout(intimer); }, 300); document.getElementById('nowPrintingWrapper').style.display="none"; } // --> </script> <noscript> Your browser does not support JavaScript! </noscript> </head> <body> <div id="overlay"> <div id="nowPrintingWrapper"> <section id="nowPrinting"> <h1>Now Printing</h1> <p><img src="images/icon_loading.gif" /></p> </section> </div> <div id="nowLoadingWrapper"> <section id="nowLoading"> <h1>Now Loading</h1> <p><img src="images/icon_loading.gif" /></p> </section> </div> </div> <header id="global-header"> <h1><a href="A001.html"><img src="images/logo_01.png" alt="HOME" width="108" height="61"></a></h1> <div id="sub-logo"><a href="http://www.star-m.jp/" target="_blank"><img src="images/logo_02.png" alt="" width="120" height="13"></a></div> </header> <section class="btmMg20"> <h2 class="h2-tit-01 btmMg20">レシートレター</h2> </section> <form onsubmit='return false;' id="form"> <div class="container"> <d1> <dt>用紙幅選択</dt> <dd> <select id='PaperWidth' onchange="changePaperWidth(this)"> <option value='2inch' selected='selected'>2インチ (SM-S210i)</option> <option value='3inch'>3インチ (TSP650II)</option> </select> </dd> </d1> <d1> <dt>ロゴ選択</dt> <dd> <select id='LogoSelection' onchange="changeLogo()"> <option value='01-Receipt_Letter_ENG.bmp' selected='selected'>01 レシートレター英語</option> <option value='02-Receipt_Letter_JP.bmp'>02 レシートレター日本語</option> <option value='03-Thanks_Letter.bmp'>03 サンクスレター</option> <option value='04-Kansha_Letter_H.bmp'>04 感謝レター1</option> <option value='05-Kansha_Letter_V.bmp'>05 感謝レター2</option> <option value='06-Kokuhaku_Letter.bmp'>06 告白レター</option> <option value='07-Sorry_Letter.bmp'>07 ごめんねレター</option> <option value='08-Happy_Birthday.bmp'>08 ハッピーバースデー</option> <option value='09-Happy_Christmas.bmp'>09 ハッピークリスマス</option> <option value='10-Merry_Christmas.bmp'>10 メリークリスマス</option> <option value='11-Happy_New_Year.bmp'>11 ハッピーニューイヤー</option> <option value='12-Happy_Valentines.bmp'>12 バレンタイン</option> </select> </dd> </d1> <hr> <d1> <dt>ロゴ</dt> <dd> <canvas id='canvasPrint' width='0' height='15' hidden> Your browser does not support Canvas! </canvas> <canvas id='canvasShow' width='0'> Your browser does not support Canvas! </canvas> </dd> </d1> <d1> <dt>本文</dt> <dd> <div id="container"></div> </dd> </d1> <hr> <footer> <input id="sendBtnAscii" type="button" value="印刷" onclick="onSend()" /> </footer> </div> </form> <div class="to_top"> <a href="#global-header">Go to top</a> </div> <footer id="global-footer" class="clearfix"> <a href="https://www.star-m.jp/starwebprnt-oml.html" target="_blank"><img src="images/footer-logo.png" width="123" alt="" id="footer-logo"></a> <img src="images/footer-image.png" height="54" alt=""/> </footer> <script> window.onload = function() { nowLoading(); createTextArea(); changePaperWidth(document.getElementById('PaperWidth')); changeLogo(document.getElementById('LogoSelection')); } </script> </body> </html>