iT邦幫忙

1

我是一個新手請教各位高手幫助

我是一個新手我用JavaScript做了一個簡單按制列印網頁但不知道如何令打印機列印完自動切紙 我用的是star tsp100 usb熱感打印機有切紙功能 現在一按打印會不停出紙 程式碼如下 我收起了所有<>:

div id="print_parts"
測試列印
/div

script type="text/javascript"
function printScreen(printlist)
{
var value = printlist.innerHTML;
var printPage = window.open("", "Printing...", "");
printPage.document.open();
printPage.document.write("HTML>head>/head>BODY onload='window.print();window.close()'>");
printPage.document.write("PRE");
printPage.document.write(value);
printPage.document.write("/PRE");
printPage.document.close("/BODY/HTML");
}
/script
a href="#" onclick="printScreen(print_parts);" >Printing /a

看更多先前的討論...收起先前的討論...
ccutmis iT邦高手 8 級 ‧ 2019-12-25 21:19:36 檢舉
參考看看這個...

https://stackoverflow.com/questions/5656919/star-tsp100-printer-make-it-cut-the-page-page-break



https://docs.kioskproapp.com/article/415-print-star-micronics-printers#sample-code
terrylee iT邦新手 5 級 ‧ 2019-12-25 22:09:26 檢舉
kios那個之前試過提供的DEMO code一樣做不到自動切紙
另一個<div style="page-break-after:always"></div>加了亦沒有做到自動切紙
小魚 iT邦大師 1 級 ‧ 2019-12-25 23:05:05 檢舉
JavaScript?
自動切紙?
JavaScript可以控制印表機嗎?
terrylee iT邦新手 5 級 ‧ 2019-12-25 23:18:29 檢舉
是可以正常打印只是熱感打印機列印完成不能自動停和cut paper
小魚大的疑惑也是我的疑惑!一般列印的工作多半交給java或c++、c#這類能驅動各廠牌印表機的語言處理!js能處理的印表機列印問題我自己也是願聞其詳!
淺水員 iT邦新手 1 級 ‧ 2019-12-26 00:58:05 檢舉
他是用 window.print() 去印出該頁面吧
其實應該是彈出列印的對話盒
主要還是使用者自己點列印

js我是不知道能直接控制切紙
也許不是從JS,而是從印表機的驅動或是設定下手比較有可能做到?
froce iT邦大師 2 級 ‧ 2019-12-26 10:38:52 檢舉
熱感應印表機?
這種自動切紙的機制都很怪,JS應該是做不到去控制。
建議
1.列印範圍加上長度(用公制)固定試試看
2.或是改成用PDF去列印
terrylee iT邦新手 5 級 ‧ 2019-12-26 17:07:06 檢舉
https://www.itread01.com/content/1545129378.html
我之前看過一些範例都是不能做到切紙 的
1
小魚
iT邦大師 1 級 ‧ 2019-12-26 08:23:00

依照我的理解,
網路程式應該是沒有權限去控制印表機,
通常是單機程式才能控制周邊設備,
你在網頁上下指令,
其實執行列印的是瀏覽器不是JavaScript,
(瀏覽器安裝在電腦, 所以是單機程式)
如果你要控制印表機的動作,
可能要朝單機程式的方向去找答案.

terrylee iT邦新手 5 級 ‧ 2019-12-26 17:07:33 檢舉

https://www.itread01.com/content/1545129378.html
我之前看過一些範例都是不能做到切紙 的

1
Luke
iT邦新手 3 級 ‧ 2019-12-26 09:09:54
window.open(' 新視窗的網址 ', '新視窗的名稱', config='height=高度,width=寬度');
printPage.document.write("<HTML><head></head><BODY width='100px;'></BODY>....略

給個寬度
您沒有給寬度 長度, 所以不是(會不停出紙)
您給的列印長度太多了,所以標籤紙 , 一直列印空白得出來。
寬、長 您要自己去試,或去star tsp100 標籤官網看看,問問他們技術員

terrylee iT邦新手 5 級 ‧ 2019-12-26 13:08:00 檢舉

我在function printScreen(printlist)入面加了
{ printPage.document.open('config=height=20px,width=20px');

 printPage.document.write("<HTML><head></head><BODY width='20px;', height='20px;'></BODY>");     

} 都是一樣會不停出紙

terrylee iT邦新手 5 級 ‧ 2019-12-26 17:33:03 檢舉

https://hant-kb.kutu66.com/html/post_2188820
我的問題 好多人都有這個問題

3
ccutmis
iT邦高手 8 級 ‧ 2019-12-26 09:44:12

我也不知道這是不是正解,畢竟手邊沒有能測試的機器,就以很久之前工作上弄過的網頁列印經驗給樓主一些參考。

目前主流的瀏覽器大多支援用CSS設定列印與螢幕顯示分開。你問的這個問題可以透過CSS來設定你要列印區域,我用GOOGLE搜 "TSP100 Series Specifications" 找到這個
https://star-emea.com/products/tsp100/
根據我破破的英文得到的訊息是它的頁面寬度大概是58mm,高度大概是83mm,我手邊正好有一張全家就是你家的券子量了一下寬度是符合的,但是高度是90mm,這個我就沒法測了,總之我寫了一個html分別對列印(media="print")及顯示(media="screen")設定不同的css,可以直接按"列印測試"看效果是不是OK...

(註:這邊使用Google Chrome瀏覽器,下列印命令會先跳到預覽,不用真的印出來就可以大概預估印出的效果,推薦要編輯print.css的朋友使用。以前我實作過的都是印A4紙,那個沒有要切紙的問題,這邊的demo能不能有切紙作用就要樓主自行測試了)

以下是範例html

<!DOCTYPE html>
<html lang="zh-tw">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style type="text/css" media="print">
    *,html{margin:0;padding:0;}
    body{font-size:4mm;}
    .noPrint{display:none;} /*不列印的html元素就套用這個class */
    .singlePage{width:56mm;height:81mm;border:dotted 1mm #000;position:relative;}
    .text-center{text-align:center;}
    h1{font-size:7mm;line-height:8mm;}
    h3{font-size:5mm;line-height:6mm;}
    p{font-size:4mm;line-height:5mm;}
    p.bottomInfo{position:absolute;bottom:0mm;left:0mm;}
  </style>
  <style type="text/css" media="screen">
    *,html{margin:0;padding:0;}
    .singlePage{width:90vw;height:98%;border:solid 5px #B30;padding:10px;margin:0 auto;}
    .text-center{text-align:center;}
    .bg-danger{background-color:#F00;}
    .text-white{color:#FFF;}
    p{padding:5px;}
    #printBtn{background:#D30;padding:10px;border:solid 1px #B30;color:#FF0;}
    .w90{width:90%;}
    .mx-auto{margin:0 auto;}
  </style>
</head>
<body>
<div class="noPrint w90 mx-auto">
  <button id="printBtn" onclick="window.print()">列印測試</button>
</div>
<div class="singlePage">
  <p class="noPrint bg-danger text-white">你目前看到的畫面跟列印結果是不一樣的!</p>
  <h1 class="text-center">FamilyMard</h1>
  <h1 class="text-center">好康優惠</h1>
  <h3 class="text-center">商品優惠券</h3>
  <p>憑此券下列商品"各優惠10組"</p>
  <p>一、【買一送一】</p>
  <p>模範生點心餅(大)雞汁</p>
  <p>海倫仙度斯洗髮精</p>
  <p class="bottomInfo">
  ||| ||||| 我是巴扣 ||||| |||<br/>
  商品數量有限售完為止,本券限用1次影印無效</p>
</div>
</body>
</html>

每一個 div.singlePage 就是一頁 假如你要印三頁就是

<div class="singlePage">
Page 1
</div>
<div class="singlePage">
Page 2
</div>
<div class="singlePage">
Page 3
</div>

希望有幫助喔~ 還是不行的話可能就直接找印表機廠商詢問吧...

terrylee iT邦新手 5 級 ‧ 2019-12-26 16:53:05 檢舉

CSS來設定只是列印指定區域如果用A4打印當然沒有問題 但熱感打印機的紙是一大卷的所以以上的
範例html用star tsp100打印時都會出現同樣問題不會列印完自動切紙 會不停出紙

ccutmis iT邦高手 8 級 ‧ 2019-12-26 16:59:50 檢舉

那就只能聯絡印表機廠商了 我也沒機器能測啊 還是你要寄一台送我 我可以免費幫你測? XD

terrylee iT邦新手 5 級 ‧ 2019-12-26 17:08:14 檢舉

https://www.itread01.com/content/1545129378.html
我之前看過一些範例都是不能做到切紙 的

我要發表回答

立即登入回答