คำนำ
เมื่อเร็ว ๆ นี้เครื่องพิมพ์ถูกใช้ในโครงการ ตอนแรกฉันไม่เข้าใจ แต่ตอนนี้ฉันได้ทำแล้วดังนั้นฉันจึงสรุปแล้ว บทความนี้รวมถึงการพิมพ์พื้นหลัง (สองวิธี) และการพิมพ์ JS front-end แต่ตอนนี้เท่านั้นที่รองรับการพิมพ์ ยิ่งกว่านั้นหากคุณต้องการเชื่อมต่อกับเครื่องพิมพ์จากระยะไกลการสร้างรหัส QR และทำงานโดยตรงโดยคำสั่งเครื่องพิมพ์คุณต้องแก้ไขการกำหนดค่าความปลอดภัยของเบราว์เซอร์ นี่คือการแนะนำรายละเอียด
การพิมพ์พื้นหลังประเภทแรก:
ใช้คลาส PrintServicelookup ใน Javax เพื่อพิมพ์ คุณสามารถเรียกเครื่องพิมพ์เริ่มต้นโดยตรงหรือคุณสามารถใช้วิธีการต่อไปนี้เพื่อกรองและพิมพ์:
PrintServicelookup.lookupMultIdocPrintServices (รสชาติ, แอตทริบิวต์);
รหัสปฏิบัติการมีดังนี้:
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {fileInputStream textStream = null; ลอง {textStream = ใหม่ fileInputStream ("ที่อยู่"); } catch (filenotfoundException e) {e.printStackTrace (); } if (textStream! = null) // เมื่อเนื้อหาการพิมพ์ไม่ว่างเปล่า {// ระบุรูปแบบการพิมพ์รูปแบบ docflavor flavour = docflavor.input_stream.pdf; // service_formatted.printable // ตำแหน่งบริการพิมพ์เริ่มต้น (พิมพ์ // สร้างงานพิมพ์ docPrintJob งาน = printService.createPrintJob (); // ตั้งค่าแอตทริบิวต์การพิมพ์ printrequestattributeset pras = ใหม่ hashprintrequestattributeset (); // ตั้งค่าขนาดกระดาษคุณยังสามารถสร้างคลาส MediaSize ใหม่เพื่อปรับแต่งขนาด PRAS.ADD (MediaSizename.ISO_A4); docattributeset das = ใหม่ hashdocattributeset (); // ระบุเนื้อหาการพิมพ์ doc = new SimpledOc (TextStream, Flavour, Das); // อย่าแสดงกล่องโต้ตอบพิมพ์งานพิมพ์โดยตรงลอง {job.print (doc, pras); // ดำเนินการพิมพ์เฉพาะสำหรับแต่ละหน้า} catch (printexception pe) {pe.printstacktrace (); }} else {// ถ้าเนื้อหาการพิมพ์ว่างเปล่าให้ผู้ใช้พิมพ์จะยกเลิก joptionpane.showconfirmdialog (null, "ขออภัยงานเครื่องพิมพ์ว่างเปล่าพิมพ์ถูกยกเลิก!", "ว่างเปล่า", joptionpane.default_option - การพิมพ์พื้นหลังประเภทที่สอง:
หมายเหตุ: การพิมพ์ประเภทที่สองและสามใช้คำสั่งเครื่องพิมพ์เพื่อใช้งาน ที่นี่คุณต้องใช้แพ็คเกจ JNA Jar และ JDK ต้องใช้ 32 บิตและต้องลงทะเบียน DLL ที่เกี่ยวข้อง สำหรับระบบที่แตกต่างกัน DLL จะต้องลงทะเบียนภายใต้หน้าต่างที่แตกต่างกัน หลังจากการลงทะเบียนที่ประสบความสำเร็จต้องใช้ Win+R และคำสั่ง regsvr32.exe tscactivex.dll เรียกว่าและเรียกใช้
รหัสปฏิบัติการมีดังนี้:
คลาสสาธารณะ Javademo {อินเตอร์เฟสสาธารณะ tsclibdll ขยายไลบรารี {tsclibdll อินสแตนซ์ = (tsclibdll) native.loadLibrary ("tsclib", tsclibdll.class); int เกี่ยวกับ (); int openport (pianoname สตริง); int closeport (); int sendCommand (เครื่องพิมพ์สตริง); การตั้งค่า int (ความกว้างของสตริง, ความสูงของสตริง, ความเร็วสตริง, ความหนาแน่นของสตริง, เซ็นเซอร์สตริง, สตริงแนวตั้ง, ออฟเซ็ตสตริง); int downloadpcx (ชื่อไฟล์สตริง, string image_name); int barcode (String X, String Y, ประเภทสตริง, ความสูงของสตริง, สตริงที่อ่านได้, การหมุนสตริง, สตริงแคบ, สตริงกว้าง, รหัสสตริง); int printerfont (สตริง x, สตริง y, สตริงตัวอักษรสตริง, การหมุนสตริง, สตริง xmul, สตริง ymul, ข้อความสตริง); int ClearBuffer (); int printlabel (ชุดสตริง, สำเนาสตริง); int formfeed (); int noBackfeed (); int windowsfont (int x, int y, int fontheight, การหมุน int, int fontstyle, int fontunderline, สตริง szfacename, เนื้อหาสตริง); } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.setProperty ("jna.encoding", "gbk"); // สนับสนุนภาษาจีน simpledateFormat df = ใหม่ simpledateFormat ("yyyy-mm-dd hh: mm: ss"); เวลาสตริง = df.format (วันที่ใหม่ ()); String qrCode = "PD102011"; tsclibdll.instance.openport ("tsc ttp-244 pro"); // พิมพ์โมเดล tsclibdll.instance.setup ("70", "40", "5", "8", "0", "2", "0"); tsclibdll.instance.clearbuffer (); สตริง command = "qrcode 120,90, q, 8, a, 0, m1, s7,/" " + qrcode +"/""; // พิมพ์พารามิเตอร์และเนื้อหาของรหัส QR tsclibdll.instance.sendCommand (คำสั่ง); // โอนคำสั่ง tsclibdll.instance.sendCommand ("ข้อความ 300 70 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 //tsclibdll.instance.windowsfont(300, 70, 36, 0, 0, 0, "Arial", "Office Supplies-Label Paper"); tsclibdll.instance.printlabel ("1", "1"); tsclibdll.instance.closeport (); - หมายเหตุ: วิธีการพิมพ์นี้ต้องใช้การเชื่อมต่อ USB (TTP-244 Pro) หากคุณต้องการสร้างออนไลน์และเชื่อมต่อจากระยะไกลคุณต้องใช้วิธีที่สาม
การพิมพ์ JS ประเภทที่สาม
เมื่อพิมพ์โดยใช้ JS เบราว์เซอร์จะถูก จำกัด เป็นหลัก ปัจจุบันมีเพียงเบราว์เซอร์ IE เท่านั้นที่รองรับ เมื่อพิมพ์เซิร์ฟเวอร์อัตโนมัติไม่สามารถสร้างวัตถุบนคอนโซลได้ โปรดปรับการตั้งค่าที่เกี่ยวข้องใน ActiveX ในระดับที่กำหนดเองในความปลอดภัยของเบราว์เซอร์เพื่อเปิดใช้งาน รหัสมีดังนี้:
<script type = "text/javascript"> function printqrcode () {var tscobj = new ActivexObject ("tscactivex.tsclib"); // dll ใช้โดยเครื่องพิมพ์ //tscobj.activexabout (); // ข้อมูลเครื่องพิมพ์ tscobj.activexopenport ("tsc ttp-244 pro"); // ชื่อเครื่องพิมพ์ไม่สามารถเขียนไม่ถูกต้อง //tscobj.activexdownloadpcx ("d:/myeclipseproject/filesmanager/trunk/doc/02-reference/03-qr ตัวอย่าง/tscactivex.dll-php-example/"," 123.pcx "); tscobj.activexsetup ("70", "40", "4", "15", "0", "2.5", "0"); // การตั้งค่าการพิมพ์ // tscobj.activexsetup ("ความกว้างของฉลาก", "ความสูงของป้ายกำกับ" Senso) "," Gap/Black Mark ระยะห่างแนวตั้ง (mm) "," ระยะห่างจากเครื่องหมายออฟเซ็ตมาร์ค (มม.) ")"); //tscobj.activexformfeed (); //tscobj.activexnobackfeed (); TSCOBJ.ACTIONXSENDCOMMAND ("ทิศทาง 1"); // ตั้งค่าแท็กทิศทางทิศทาง 1 มุมบนซ้าย (x, y) = {0,0}; ทิศทาง 0 มุมล่างขวา (x, y) = {0,0}; TSCOBJ.ACTIONXSENDCOMMAND ("ตั้งค่าการฉีกขาด"); tscobj.activexclearbuffer (); //tscobj.activexsendCommand ("putpcx 0,0,/" 123.pcx/""); /* 1. ActiveXPrinterFont ใช้การเข้ารหัสในตัวสำหรับเครื่องซึ่งมักจะใช้ในการพิมพ์เป็นภาษาอังกฤษ 2. ActiveXWindowsFont สามารถส่งออกอักขระภาษาจีนได้ แต่ต้องเป็นแบบอักษรที่มีอยู่ในระบบ tscobj.activexprinterfont ("a", "b", "c", "d", "e", "f", "g"); ตอบ: สตริงจุดเริ่มต้นในทิศทาง x ของข้อความที่แสดงโดยจุด B: สตริงจุดเริ่มต้นของทิศทางข้อความ y แสดงด้วยจุด C: ชื่อตัวอักษรที่สร้างขึ้นทั้งหมด 12 ประเภท (1: 8*12 จุด 2: 12*20 จุด 3: 16*24 จุด 4: 24*32 จุด 5: 32*48 DOTS TST24.BF2: จีนดั้งเดิม 24*24 TST16.BF2: จีนดั้งเดิม 16*16 TTT24.BF2 TSS16.BF2: จีน 16*16 K: ข้อความ 24*24 L: ข้อความ 16*16) D: สตริง, มุมการหมุน E: สตริง, การขยายทิศทาง X 1-8 F: สตริง, การขยายทิศทาง Y 1-8 กรัม: สตริง, พิมพ์เนื้อหา ActivexWindowsFont (A, B, C, D, E, F พารามิเตอร์: A: ประเภทจำนวนเต็มจุดเริ่มต้นในทิศทาง x ของข้อความแสดงโดยจุด B: ประเภทจำนวนเต็มจุดเริ่มต้นของทิศทางข้อความ y ซึ่งแสดงเป็นจุด C: ประเภทจำนวนเต็ม, ความสูงของตัวอักษร, แสดงด้วยจุด D: ประเภทจำนวนเต็ม, มุมการหมุน, การหมุนทวนเข็มนาฬิกา 0-ROTATE 0 °, 90-ROTATE 90 °, 180-ROTATE 180 °, 270-ROTATE 270 ° E: ประเภทจำนวนเต็มลักษณะตัวอักษร 0: ฉลาก; 1: ตัวเอียง; 2: ตัวหนา; 3: ตัวเอียงหนา F: ประเภทจำนวนเต็ม, ขีดล่าง, 0: ไม่มีขีดเส้นใต้; 1: ขีดล่าง G: ประเภทสตริงชื่อตัวอักษร ตัวอย่างเช่น: Arial, Times New Roman H: ประเภทสตริงพิมพ์เนื้อหาข้อความ */// TSCOBJ.ACTIONXWINDOWSFONT (500, 200, 48, 90, 0, "Arial", "/U7F16/U7801"); TSCOBJ.ACTIONXWINDOWSFONT (260, 60, 60, 0, 2, 0, "Arial", "XX เฉพาะ"); // var cmd = 'qrcode บาร์โค้ดจุดเริ่มต้นในทิศทาง x, จุดเริ่มต้นบาร์โค้ดในทิศทาง y, ระดับการแก้ไขข้อผิดพลาด, ความสูงของรหัส QR, A (A และ M), มุมการหมุน, M2 (แบ่งออกเป็นประเภท 1 และประเภท 2), S1 (S1-S8, S7 เริ่มต้น) var cmd = 'qrcode 80,80, h, 7, a, 0, m2, s1,/"'+" 123456789 "+'/"'; TSCOBJ.ACTIONXSENDCOMMAND (CMD); TSCOBJ.ACTIONXWINDOWSFONT (280, 150, 40, 0, 0, "Arial", "123456789"); TSCOBJ.ACTIONXWINDOWSFONT (180, 260, 30, 0, 0, 0, "Arial", "XXXXXXXXX"); tscobj.activexprintlabel ("1", "1"); // (จำนวนสำเนาพิมพ์, จำนวนการพิมพ์ต่อหน้า) tscobj.activexclearbuffer (); // ล้าง tscobj.activexcloseport (); // ปิดพอร์ตพิมพ์} </script>สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com