前言
c#語言,asp.net mvc,南京都昌電子病歷模板工具(類似word),斑馬GK888t,打印手腕帶和標簽紙。
實現步驟為:在頁面上顯示一個或多個都昌模板工具,點擊頁面上的button,出現都昌控件的預覽界面,然后在預覽界面上點擊打印,打印到手腕帶紙或者標簽紙上。
簡述
安裝打印機驅動(不是很理解,如有錯誤,歡迎大家賜教)
- 從網上下載了GK888t的打印機驅動,並完成安裝。(或者不需要安裝,有電的打印機通過usb連上電腦后,電腦會自動識別安裝)
- 在控制面板\硬件和聲音\設備和打印機,右鍵選擇添加打印機,端口就直接默認吧(不知道為什么,但就是這樣做了),選擇的打印機驅動必須是ZDesiger Gk888t。添加完成后,設置為默認打印機
打印設置的注意事項
- 首先明確,打印首選項的大小設置和打印內容的大小設置要與實物紙張大小一致
- 設置打印首選項,大小設置成實際的紙張大小,單位是看標簽格式中選了哪一項
像手腕帶這樣,紙張上只有部分是打印區域,首選項中設置的大小還是設置成整條紙的大小,不需要打印的紙對應打印內容的空白區域。
- 在高級設置中,對於GK888t這個打印機,不管打印是否使用了碳帶,標簽紙張類型都選 熱敏(用碳帶打印,曾勾選了熱轉印,但是只能打一次,這次打完后打印機的feed鍵就變紅),跟蹤模式看紙張是否是連續的,連續紙選擇連續,間隔紙選擇Web檢測,標記感應不清楚。操作模式選擇了撕紙
打印時遇到的問題
- 紅框是紙張中需要打印的區域,期望打印出來的效果如黃框所示,但是實際打印結果卻是綠框這樣。
- 嘗試:將打印首選項中標簽格式中的縱向改為橫向,但是問題沒解決。
- 解決:后來發現都昌的模板工具中,有頁面打印設置這一選項,橫縱向改變后(同時長寬也要各自調換),實際打印結果就能如黃框一般
- 擴展1:如果使用類似word的富文本編輯器在頁面上打印時,遇到上述問題,可以考慮更改編輯器中的打印選項。
- 擴展2:如果沒用富文本編輯器,直接寫html,用window.print()打印時,遇到上述問題,將打印首選項中標簽格式中的縱向改為橫向,即可解決問題。
- 一次打印多個,打印內容越打越后面,不在正確位置
- 先確保滿足了打印內容大小,打印首選項大小以及實物紙張大小 三者一致。
- 檢查打印機滾輪以及打印鋼片(不知道怎么稱呼)那邊是否有污垢,會造成阻力,需要清理掉。
- 實物紙張得是新的,不能重復使用,因為已經打印上的內容在滾輪滾動時會出現阻力。
- 然后就是 尺子在手,天下我有。量出每次打印的偏移量,估求出平均值,改變打印內容的大小和打印首選項中大小的長度。
- 我的經驗就是以上四步,歡迎討論指教。
- 接上問題,原本調整好了打印也沒有偏移,之后調整了打印機(取換了碳帶,重新放了一卷打印紙),再打印,發現位置又偏了!
- 說實話,超絕望~,變動一次調一次位置,這阻力變動的也太快了吧,可用性太低了
- 解決:把打印首選項中的跟蹤模式換了,從連續改為標記感應,偏移沒有了(紙張用的是愛德手腕帶,是連續紙也是標記紙)
- 總結:遇到這種情況,可以嘗試更改一下跟蹤模式
補充(window.print()打印標簽,源碼以及一些經驗疑惑)
ie瀏覽器要允許運行腳本或者ActiveX控件
- 經驗與疑惑
- 本經驗分享討論前提:不使用其他插件,就只用jq。當然也可以使用類似lodop,添加一個object來實現,這種情況不討論。
- 將每塊內容打印到每張貼紙上,需在每塊內容上添加page-break-after:always;樣式。[可搜索源碼內容查看具體使用]
- 曾嘗試設置@page的css代碼來控制打印的頁面大小,但無效
- 判斷修改是否有效:選擇xps document writer 打印機,保存為xps文件,打開,看頁面邊距,看是不是一張一張。
- 如果是用瀏覽器的預覽判斷修改是否有效,可能這還涉及到瀏覽器的打印設置。
- 后來發現,關於頁面尺寸,xps打印機沒有打印首選項,那就設置斑馬打印機的首選項(紅框紅圈),點擊應用后,再選回xps打印機(綠框綠圈),點擊應用后,點擊打印。頁面尺寸就能按照首選項設定的大小來。
- 我實驗下來,只要設置好了每塊內容的長和寬(單位需要是cm或者英寸,不能用px),打印首選項的大小(並且生效了),以及加上了page-break-after,就能保證每塊內容打印在特定大小的紙上。
- 源碼
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>標簽打印</title>
<meta charset="utf-8" />
<!-- <script type="text/javascript" src="./jquery-1.7.2-min.js"></script> -->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
<script type="text/javascript">
$(function () {
//alert("1");
$.each($(".singleInfo .singleInfoRight"), function (k, v) {
if (k >= 0) {
var $checkbox = $(v).find("input[type='checkbox']");
$checkbox.prop("checked", "true");
}
})
//if (getExplorer() == "IE") {
pagesetup_null(); //刪除打印頁面的頁眉頁腳
//}
})
//選中所有復選框
function CheckAll(e) {
var isAll = $(e).is(':checked');
$.each($(".singleInfo .singleInfoRight"), function (k, v) {
if (k >= 0) {
var $checkbox = $(v).find("input[type='checkbox']");
if (isAll) {
$checkbox.prop("checked", "true");
}
else {
$checkbox.removeAttr("checked");
}
}
})
}
//單個復選框點擊事件
function singleCheckboxClick(e) {
var ischecked = $(e).is(':checked');
if (!ischecked) {
$("#totalcheckbox").removeAttr("checked");
}
}
//打印
function labelPrint() {
var printhtml = "";
var codelist = [];
$(".singleInfoRight>input:checked").each(function (i, item) {
var content = $(this).parent().prev();
codelist.push($(this).parent().parent().attr("code"));
printhtml = printhtml + content.prop("outerHTML");
})
if (printhtml == "") {
window.external.MessageShow(0, "請先選中需要打印的標簽");
return false;
}
var bodyHtml = document.body.innerHTML;
document.body.innerHTML = printhtml;
window.print();
document.body.innerHTML = bodyHtml;
}
//獲取當前瀏覽器
function getExplorer() {
var explorer = window.navigator.userAgent;
//ie
if (explorer.indexOf("MSIE") >= 0) {
return "IE";
}
//firefox
else if (explorer.indexOf("Firefox") >= 0) {
return "Firefox";
}
//Chrome
else if (explorer.indexOf("Chrome") >= 0) {
return "Chrome";
}
//Opera
else if (explorer.indexOf("Opera") >= 0) {
return "Opera";
}
//Safari
else if (explorer.indexOf("Safari") >= 0) {
return "Safari";
}
}
//刪除打印頁面的頁眉頁腳
function pagesetup_null() {
// alert("1");
var hkey_root, hkey_path, hkey_key;
hkey_root = "HKEY_CURRENT_USER";
hkey_path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
try {
var RegWsh = new ActiveXObject("WScript.Shell");
hkey_key = "header";
RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "");
hkey_key = "footer";
RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "");
hkey_key = "margin_left";
RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "0");
//RegWsh.sendKeys('%fu');
} catch (e) {
}
}
</script>
<style type="text/css">
@media screen{
#allcontent{
height:670px;
width:62%;
display:block;
margin-top:10px;
margin-left:10px;
/*overflow-y:scroll;*/
}
.singleInfo{
width: 300px;
box-shadow: 4px 4px 4px 4px rgba(0,0,0,0.16);
-webkit-border-radius: 3px;
font-family:"微軟雅黑";
-moz-border-radius: 3px;
border-radius: 3px;
height:204px;
background-color:rgba(255, 255, 255, 1);
float:left;
margin-right:20px;
margin-bottom:20px;
}
.singleInfoLeft{
width:95%;
float:left;
font-size:13px;
/*width:7cm;
height:5.5cm;
page-break-after:always;*/
}
.singleInfoRight{
width:5%;
float:left;
}
.allDrug{
width:70%;
height:120px;
border:1px solid;
float:left;
}
}
@media print{
/*@page{
size:A4 portrait;
margin-left:0;
}*/
.singleInfoLeft{
font-size:15px;
width:8cm;
height:6cm;
display:block;/*page-break-after:always;*/
background-color:white;
}
.singleInfoLeft:not(:last-of-type) {
page-break-after:always;
}
.allDrug{
width:70%;
height:3.5cm;
border:1px solid;
float:left;
}
}
.allDrug>div{
margin-left:5px;
margin-top:5px;
}
.brname{
font-weight:bold;
font-size:19px;
}
.qrcode{
width:25%;
float:left;
background-color:black;
}
.yyewmblock{
overflow:hidden;
}
.pysj,.hsname{
display:inline-block;
width:85px;
height:15px;
border-bottom:solid 1px;
}
.singleDrug{
font-size:13px;
}
</style>
</head>
<body>
<input id="totalcheckbox" type="checkbox" onclick="CheckAll(this)" />全選
<input type="button" value="打印" onclick="labelPrint()" />
<div id="allcontent">
<div class="singleInfo">
<div class="singleInfoLeft" media="print">
<div>
<span class="brname">紅蘿卜</span>
<span class="zyh">00044383</span>
<span class="xb">男</span>
<span class="ch">C1001</span>
<span class="bq">夢想家園</span>
</div>
<div class="yyewmblock">
<div class="allDrug">
<div class="singleDrug">
<div>
<span class="drugname">精煉食鹽</span> <span class="druggg">250ml</span>
</div>
<div>
檢測結果(合格) 批次:<span class="psph">18.10.31</span>
</div>
</div>
</div>
<div class="qrcode">
</div>
</div>
<div>
<span class="syfs">食品添加</span> <span class="pl">一天不可超過200mg</span>
</div>
<div>
<span class="sczxdsj">2018-08-10 16:50:12</span>
</div>
<div class="singlelastdiv">
<span>購買時間:</span><span class="gmsj">2018-10-31</span>
<span>購買人:</span><span class="gmr">紅參</span>
</div>
</div>
<div class="singleInfoRight"><input type="checkbox" onclick="singleCheckboxClick(this)"/></div>
</div>
<div class="singleInfo">
<div class="singleInfoLeft" media="print">
<div>
<span class="brname">紅蘿卜</span>
<span class="zyh">00044383</span>
<span class="xb">男</span>
<span class="ch">C1001</span>
<span class="bq">夢想家園</span>
</div>
<div class="yyewmblock">
<div class="allDrug">
<div class="singleDrug">
<div>
<span class="drugname">精煉食鹽</span> <span class="druggg">250ml</span>
</div>
<div>
檢測結果(合格) 批次:<span class="psph">18.10.31</span>
</div>
</div>
</div>
<div class="qrcode">
</div>
</div>
<div>
<span class="syfs">食品添加</span> <span class="pl">一天不可超過200mg</span>
</div>
<div>
<span class="sczxdsj">2018-08-10 16:50:12</span>
</div>
<div class="singlelastdiv">
<span>購買時間:</span><span class="gmsj">2018-10-31</span>
<span>購買人:</span><span class="gmr">紅參</span>
</div>
</div>
<div class="singleInfoRight"><input type="checkbox" onclick="singleCheckboxClick(this)"/></div>
</div>
</div>
</body>
</html>