การพิมพ์ดิบ
Introduced in Version 12
การส่งสตริงของคำสั่งไปยังเครื่องพิมพ์โดยตรงในภาษาเนทีฟของมันเรียกว่า Raw Printing
เครื่องพิมพ์ความร้อนหลายเครื่องต้องการคำสั่งดิบเหล่านี้ที่ส่งไปเพื่อทำฟังก์ชันเช่น การพิมพ์บาร์โค้ด การพิมพ์ใบเสร็จ การพิมพ์ป้ายกำกับ ฯลฯ Raw Printing ข้ามไดรเวอร์ของเครื่องพิมพ์ในกรณีส่วนใหญ่ ทำให้ทำงานได้เร็วและเชื่อถือได้มาก Raw Printing ยังสามารถทำฟีเจอร์ขั้นสูงบางอย่าง เช่น การตัดกระดาษใบเสร็จ การเด้ยุลิ้นชักเงิน ฯลฯ
1. การตั้งค่า Raw Printing ใน ERPNext
1.1 การติดตั้งแอปพลิเคชัน QZ Tray บนคอมพิวเตอร์ไคลเอนต์
ดาวน์โหลดและติดตั้งแอปพลิเคชัน QZ Tray บนคอมพิวเตอร์ที่เครื่องพิมพ์ความร้อนของคุณเชื่อมต่ออยู่ แอปพลิเคชันนี้สามารถพบได้ที่ เว็บไซต์อย่างเป็นทางการ ในปัจจุบัน QZ Tray รองรับ Windows, macOS และ Linux ระหว่างการติดตั้งคุณจะได้รับแจ้งให้ติดตั้ง Java หากยังไม่ได้ติดตั้ง โปรดติดตั้ง Java เพื่อให้การติดตั้งเสร็จสมบูรณ์
คำแนะนำเพิ่มเติมเกี่ยวกับการติดตั้งแอปพลิเคชัน QZ Tray สามารถดูได้ ที่นี่
1.2 สร้าง Raw Commands Print Format
หากต้องการส่งคำสั่งดิบไปยังเครื่องพิมพ์คุณต้องสร้าง print format ในคำสั่งดิบก่อน Jinja Templating Language ถูกใช้ในคำสั่งดิบเช่นเดียวกับใน HTML custom print format
หากต้องการสร้าง print format ใหม่สำหรับ Raw Printing:
- ไปที่รายการ print format: Home > Settings > Printing > Print Format
- คลิกที่ New
- เลือก DocType ที่เกี่ยวข้อง
- ทำเครื่องหมายตัวเลือก Custom format และ Raw Printing
- กรอกฟิลด์ Raw Commands ด้วยคำสั่งดิบที่จำเป็นที่จะส่งไปยังเครื่องพิมพ์
- คลิก Save

ในปัจจุบัน ภาษาเครื่องพิมพ์แบบสตริงใดๆ สามารถใช้ในฟิลด์ Raw Commands ใน print format การเขียนคำสั่งดิบต้องการความรู้เกี่ยวกับภาษาเนทีฟของเครื่องพิมพ์ที่ผู้ผลิตเครื่องพิมพ์ให้ โปรดอ้างถึงคู่มือนักพัฒนาที่ผู้ผลิตเครื่องพิมพ์ให้เกี่ยวกับวิธีเขียนคำสั่งเนทีฟของพวกเขา
1.3 เปิดใช้งาน Raw Printing ใน Print Setting
หากต้องการเปิดใช้งาน Raw Printing:
- ไปที่: Home > Settings > Printing > Print Settings > Raw Printing
- ทำเครื่องหมายตัวเลือก Enable Raw Printing
- บันทึก
2. วิธีการใช้งาน raw printing ใน ERPNext
มีสองวิธีในการส่งคำสั่ง Raw Printing ไปยังเครื่องพิมพ์ของคุณ
2.1 การคลิกพิมพ์บนหน้ามุมมองการพิมพ์
หากต้องการพิมพ์ print format คำสั่งดิบจากมุมมองการพิมพ์เอกสาร:
- เลือก print format ที่เหมาะสม สำหรับ print format ใน Raw Commands ข้อความ "No Preview available" จะแสดงแทนการแสดงตัวอย่างการพิมพ์
- คลิกที่ปุ่มพิมพ์
- โปรดอนุญาตให้พรอมต์การเชื่อมต่อจาก QZ Tray สำหรับการกระทำที่คุณเริ่มต้น (Keyboard Shortcut: Alt + A)
- คุณอาจถูกขอให้เลือก "print format - printer mapping"
- การแมปนี้ใช้เพื่อส่งคำสั่งพิมพ์ไปยังเครื่องพิมพ์ที่เหมาะสม
- เครื่องพิมพ์ต้องถูกติดตั้งบนคอมพิวเตอร์ของคุณเพื่อให้สามารถแมปกับ print format ได้
- การแมปนี้ถูกเก็บไว้ในเครื่องเดียวกันและจะต้องตั้งค่าบนเครื่องไคลเอนต์แต่ละเครื่อง
- คุณยังสามารถแก้ไขสิ่งนี้โดยคลิกที่ปุ่ม Printer Settings

2.2 การเรียกฟังก์ชัน Raw Print จาก client script
มักจำเป็นต้องออกคำสั่งพิมพ์ในเหตุการณ์บางอย่าง (เช่น submit, save, amend ฯลฯ) สามารถเขียน client script เพื่อทำสิ่งนี้ให้คุณ
ต่อไปนี้คือฟังก์ชัน Raw Print ที่เกี่ยวข้อง:
- function:
frappe.ui.form.qz_connect
- A connection wrapper เพื่อสร้างการเชื่อมต่อกับแอปพลิเคชัน QZ Tray
- Returns a promise ซึ่ง resolves เมื่อสร้างการเชื่อมต่อสำเร็จ
- อนุญาตให้การเชื่อมต่อที่ใช้งานอยู่และไม่ได้ใช้งาน resolve ได้โดยไม่จำกัด ดังนั้นจึงสามารถเรียกได้ทุกครั้งก่อนส่งคำสั่ง
- ตัวอย่างการใช้งาน:
frappe.ui.form.qz_connect() .then(function () { return qz.print(config, data); }) .then(frappe.ui.form.qz_success) .catch(err => { frappe.ui.form.qz_fail(err); });
ที่นี่ qz เป็น global object ที่ให้โดยไลบรารี qz-tray.js
- function:
frappe.ui.form.qz_get_printer_list
- ให้รายการเครื่องพิมพ์ที่พร้อมใช้งานสำหรับแอปพลิเคชัน QZ Tray
- Returns a promise ซึ่ง resolves เป็นรายการเครื่องพิมพ์
ตัวอย่างการใช้งาน:
frappe.ui.form.qz_get_printer_list().then(
// Required action on getting the printer list.
// Note: Printer list is a array of strings.
);
3. function: frappe.ui.form.qz_success
- แสดงการแจ้งเตือน "Print Sent to the printer!" ให้ผู้ใช้ สามารถเรียกหลังจากคำสั่งพิมพ์สำเร็จ
- function:
frappe.ui.form.qz_fail
- แสดงข้อความแสดงข้อผิดพลาดให้ผู้ใช้ ควรเรียกเมื่อการเชื่อมต่อ QZ Tray ล้มเหลว
คุณยังสามารถเข้าถึงฟังก์ชันที่ให้โดยไลบรารี qz-tray.js โดยตรงผ่าน object qz คลิกที่นี่สำหรับเอกสารประกอบไลบรารี qz-tray.js โปรดทราบ: object qz ถูกเริ่มต้นเฉพาะหลังจากเรียก frappe.ui.form.qz_connect ครั้งแรกเท่านั้น ในกรณีที่คุณต้องการ object qz ก่อนหน้านั้นคุณสามารถใช้ frappe.ui.form.qz_init
