zplCloud Blog
किसी भी लेबल प्रिंटर पर ZPL प्रिंट करें: TSC, Honeywell, SATO, Brother, Toshiba और अन्य
आपके लेबल ZPL में हैं, लेकिन हर प्रिंटर Zebra नहीं है। TSPL, DPL, SBPL, EPL2, CPCL, ESC/POS, Brother Raster, PCL, Easy Plug, TPCL या JScript समझने वाले प्रिंटरों पर बिल्कुल वही लेबल कैसे प्रिंट करें - PNG, PDF या पोर्ट 9100 के लिए रॉ प्रिंट जॉब के रूप में।
एक लेबल, ग्यारह प्रिंटर भाषाएँ
ZPL सबसे व्यापक रूप से इस्तेमाल होने वाली लेबल भाषा है, और इसे Zebra प्रिंटरों के लिए लिखा गया था। यह तब तक ठीक है, जब तक वेयरहाउस में सभी प्रिंटर Zebra हों। लेकिन एक TSC प्रिंटर सस्ते ऑफ़र के साथ आया, पड़ोसी देश का प्लांट SATO पर चलता है, पैकिंग में हर डेस्क पर एक Brother QL है, प्रिंट-एंड-अप्लाई लाइन में Avery Dennison या Novexx हेड लगे हैं, और रिटर्न लेबल ऑफ़िस के लेज़र प्रिंटर पर छपते हैं। फिर भी लेबल सिर्फ़ एक ही रूप में मौजूद हैं: ZPL के रूप में, जिन्हें ERP, शॉप या zplCloud डिज़ाइनर बनाता है।
यह गाइड दिखाती है कि वह एक ZPL लेबल इन सभी प्रिंटरों तक कैसे पहुँचे - हूबहू, डॉट दर डॉट - और किन बातों का ध्यान रखना है।
ZPL न समझने वाले प्रिंटर पर ZPL प्रिंट करने के तीन तरीके
1. एम्युलेशन। कई निर्माता ZPL एम्युलेशन देते हैं: Honeywell ZSim, SATO SZPL, Godex GZPL, Citizen Cross-Emulation, और TSC व cab के ZPL मोड। सरल लेबलों के लिए यह काम करता है। बाकी सब के लिए एम्युलेशन किसी और द्वारा ZPL का दोबारा किया गया कार्यान्वयन है: फ़ॉन्ट मेट्रिक्स, बारकोड की चौड़ाई, ^FB फ़ील्ड में टेक्स्ट रैपिंग, ^GFA ग्राफ़िक्स और संग्रहीत फ़ॉन्ट थोड़ा अलग व्यवहार करते हैं, और अंत में आप हर टेम्पलेट को हर मॉडल पर टेस्ट करते रह जाते हैं।
2. कमांड का अनुवाद। एक कन्वर्टर ^FO…^A0…^FD को दूसरी भाषा के टेक्स्ट और बारकोड कमांड में दोबारा लिखता है। यह केवल उन्हीं कमांड के लिए काम करता है जिनका कोई समकक्ष है, और फिर प्रिंटर अपने फ़ॉन्ट और अपना बारकोड जनरेटर इस्तेमाल करता है। नतीजा मिलता-जुलता होता है, हूबहू नहीं।
3. तस्वीर भेजना। लेबल को लक्ष्य प्रिंटर के रिज़ॉल्यूशन पर एक बार रेंडर किया जाता है और उस प्रिंटर की अपनी भाषा के ग्राफ़िक्स कमांड में मोनोक्रोम बिटमैप के रूप में भेजा जाता है। हर प्रिंटर भाषा में ऐसा एक कमांड होता है। प्रिंटर अब कुछ भी इंटरप्रेट नहीं करता - वह सिर्फ़ डॉट प्रिंट करता है। फ़ॉन्ट, Unicode, लोगो और बारकोड बिल्कुल पूर्वावलोकन जैसे दिखते हैं।
zplCloud तीसरा तरीका अपनाता है, दो रूपों में: ड्राइवर से प्रिंट होने वाली हर चीज़ के लिए इमेज फ़ाइल के रूप में, और नेटवर्क पर मौजूद हर चीज़ के लिए प्रिंटर की भाषा में रॉ प्रिंट जॉब के रूप में।
रूप 1: PNG, JPG या PDF
ऑफ़िस प्रिंटर, ईमेल अटैचमेंट और आर्काइव के लिए लेबल बस एक फ़ाइल बन जाता है:
- ZPL से PDF हर लेबल के लिए एक पेज रेंडर करता है, या लेबलों को उनके मूल आकार में कटिंग लाइनों के साथ A4 या Letter शीट पर रखता है - ऑफ़िस के लेज़र प्रिंटर पर रिटर्न लेबल प्रिंट करने का सबसे तेज़ तरीका।
- ZPL से PNG और ZPL से JPG एकल लेबल 203, 300 या 600 dpi पर रेंडर करते हैं, उदाहरण के लिए ऐसे शॉप सिस्टम के लिए जो ड्राइवर के ज़रिए प्रिंट करता है।
फ़ाइल को जो भी प्रिंट करे, वह वही तस्वीर प्रिंट करता है। इस रूप की सीमा बीच में मौजूद ड्राइवर है: वह स्केल करता है, मार्जिन जोड़ता है, और उसे एक कंप्यूटर चाहिए।
रूप 2: प्रिंटर की अपनी भाषा, बिटमैप के रूप में
नेटवर्क पर मौजूद लेबल प्रिंटरों के लिए ड्राइवर की ज़रूरत नहीं है। प्रिंटर टूल और उनसे जुड़े API एंडपॉइंट एक तैयार प्रिंट जॉब बनाते हैं, जो सीधे TCP पोर्ट 9100 पर जाता है:
1. रेंडर करना। zplCloud इंजन हर ^XA…^XZ लेबल को लक्ष्य प्रिंटहेड के रिज़ॉल्यूशन पर बनाता है - बिना एंटी-एलियासिंग के, ठीक वैसे जैसे थर्मल हेड प्रिंट करता है। एक डॉट चौड़ी रेखा ठीक एक डॉट चौड़ी ही रहती है।
2. 1 बिट तक घटाना। हर डॉट या तो काला है या सफ़ेद।
3. पैक करना। बिटमैप लक्ष्य भाषा के ग्राफ़िक्स कमांड में जाता है, साथ में वे गिने-चुने कमांड भी जिनकी जॉब को प्रिंट होने के लिए ज़रूरत है।
4. भेजना। फ़ाइल बिना किसी बदलाव के प्रिंटर के पोर्ट 9100 पर भेजी जाती है।
| प्रिंटर | भाषा | टूल | इमेज कमांड | कम्प्रेशन |
|---|---|---|---|---|
| TSC, Printronix T-सीरीज़ | TSPL | ZPL से TSPL | BITMAP | PCX (DOWNLOAD + PUTPCX) |
| Honeywell, Datamax-O'Neil | DPL | ZPL से DPL | <STX>I + इमेज फ़ील्ड | हमेशा PCX |
| SATO | SBPL | ZPL से SBPL | ESC GB / ESC GH | PCX (ESC GP) |
| Zebra EPL प्रिंटर | EPL2 | ZPL से EPL2 | GW | - |
| Zebra और Honeywell मोबाइल प्रिंटर | CPCL | ZPL से CPCL | CG / EG बैंड | PCX (PCX) |
| Epson TM, Star, Bixolon | ESC/POS | ZPL से ESC/POS | GS v 0 | - |
| Brother QL, TD-4, P-touch | Brother Raster | ZPL से Brother Raster | रैस्टर लाइनें | TIFF PackBits |
| HP LaserJet और PCL लेज़र प्रिंटर | PCL 5 | ZPL से PCL | ESC*b#W | TIFF PackBits |
| Avery Dennison, Novexx | Easy Plug | ZPL से Easy Plug | #YIB | RLE (#YIR) |
| Toshiba Tec | TPCL | ZPL से TPCL | {SG;…} | TOPIX |
| cab | JScript | ZPL से JScript | इमेज अपलोड + I फ़ील्ड | PCX |
हर जॉब निर्माता के प्रोग्रामिंग मैनुअल के अनुसार बनता है, और हर भाषा का परीक्षण तैयार जॉब को वापस बिटमैप में डीकोड करके किया जाता है, जिसे रेंडर किए गए लेबल से डॉट दर डॉट मेल खाना होता है - Toshiba के TOPIX और Novexx के RLE दस्तावेज़ों में दिए गए उदाहरणों सहित।
एक तस्वीर को कितना डेटा चाहिए?
तस्वीर ZPL से बड़ी होती है। ईमानदार आँकड़े, 203 dpi पर 100 × 150 mm (812 × 1,218 डॉट) के एक सामान्य शिपिंग लेबल के लिए, जिसमें टेक्स्ट, एक DataMatrix, एक QR कोड, एक GS1-128 बारकोड और जापानी, रूसी व अरबी टेक्स्ट की एक पंक्ति है:
| जॉब | बिना कम्प्रेशन | कम्प्रेशन के साथ |
|---|---|---|
| ZPL स्रोत (तुलना के लिए) | 859 बाइट | - |
| TSPL | 121 KB | 52 KB (PCX) |
| EPL2 | 121 KB | - |
| SBPL | 122 KB | 52 KB (PCX) |
| DPL | - | 52 KB (PCX) |
| CPCL | 81 KB (खाली पंक्तियाँ छोड़कर) | 52 KB (PCX) |
| JScript | 124 KB (BMP) | 52 KB (PCX) |
| Brother Raster, TD-4420DN | 128 KB | 45 KB (TIFF) |
| PCL, 300 dpi पर | 64 KB (खाली पंक्तियाँ छोड़कर) | 44 KB (TIFF) |
| Easy Plug | 121 KB | 16 KB (RLE) |
| TPCL | 121 KB | 9.5 KB (TOPIX) |
तीन बातें सामने आती हैं:
- बिना कम्प्रेशन के लगभग 1 बिट प्रति डॉट। 812 × 1,218 डॉट यानी 121 KB, भाषा चाहे कोई भी हो।
- पड़ोसी पंक्तियों को देखने वाला कम्प्रेशन जीतता है। PCX और PackBits केवल एक पंक्ति के भीतर कम्प्रेस करते हैं। Toshiba का TOPIX सिर्फ़ वे बाइट भेजता है जो पिछली पंक्ति से बदले हैं, और Easy Plug का RLE एक जैसी पंक्तियों को दोहराता है - और लेबलों में ये दोनों ही बहुत होते हैं।
- नेटवर्क पर इससे शायद ही कोई फ़र्क पड़ता है। 100 Mbit ईथरनेट पर 121 KB में लगभग 10 ms लगते हैं। कम्प्रेशन Wi-Fi और Bluetooth पर, हज़ारों लेबलों के बैच में, और छोटे रिसीव बफ़र वाले प्रिंटरों के लिए फ़ायदेमंद है।
वेबसाइट टूल हर जॉब का आकार दिखाते हैं, और कम्प्रेशन चालू होने पर यह भी कि उससे कितनी बचत हुई।
चरण दर चरण
वेबसाइट पर, बिना किसी अकाउंट के:
1. अपने प्रिंटर का टूल खोलें, उदाहरण के लिए ZPL से TSPL।
2. ZPL पेस्ट करें, या .zpl फ़ाइल खोलें।
3. प्रिंटर का रिज़ॉल्यूशन चुनें (203, 300 या 600 dpi; Brother के लिए: मॉडल)।
4. चाहें तो कम्प्रेशन चालू करें, फिर कन्वर्ट करें।
5. पूर्वावलोकन जाँचें - यह ठीक वही डॉट दिखाता है जो भेजे जाएँगे - और जॉब डाउनलोड करें।
6. इसे प्रिंटर पर भेजें:
# Linux / macOS
nc -q 1 192.168.1.50 9100 < label.tspl
# Windows PowerShell
$c = [Net.Sockets.TcpClient]::new('192.168.1.50', 9100)
$b = [IO.File]::ReadAllBytes("$PWD\label.tspl")
$c.GetStream().Write($b, 0, $b.Length); $c.Close()
API के ज़रिए, आपके अपने सॉफ़्टवेयर के लिए: हर टूल api.zplcloud.com पर एक एंडपॉइंट POST /v1/tools/zpl-to-<language> है। रिस्पॉन्स सीधे रॉ जॉब होता है:
jq -Rs '{zpl: ., dpi: 203, compress: true}' label.zpl \
| curl -X POST https://api.zplcloud.com/v1/tools/zpl-to-tpcl \
-H "X-API-Key: $ZPLCLOUD_API_KEY" -H "Content-Type: application/json" \
--data-binary @- -o label.tpcl
nc -q 1 192.168.1.60 9100 < label.tpcl
कई लेबल वाली फ़ाइलें कई लेबल वाला एक ही जॉब बन जाती हैं; हेडर X-ZplCloud-Label-Count बताता है कि कितने लेबल हैं। सभी फ़ील्ड और हर भाषा के सटीक कमांड API संदर्भ में दिए गए हैं।
रोज़ाना प्रिंटिंग: zplCloud CLI, वॉच फ़ोल्डर और रिमोट प्रिंटर
टेस्ट के लिए nc ठीक है। रोज़ाना प्रिंटिंग के लिए मुफ़्त zplCloud CLI उस एक बात का ध्यान रखता है जो इन जॉब में मायने रखती है: इनमें बाइनरी इमेज डेटा होता है और इन्हें प्रिंटर तक बाइट दर बाइट पहुँचना होता है - बिना किसी टेक्स्ट एन्कोडिंग के, अंत में कोई लाइन ब्रेक जोड़े बिना। CLI यह नेटवर्क पर, USB पर, वॉच फ़ोल्डर से और अपने एजेंट के ज़रिए दूसरे नेटवर्क के प्रिंटरों तक करता है।
तैयार जॉब भेजें - किसी अकाउंट की ज़रूरत नहीं:
zplcloud send --target 192.168.1.50 --file label.tspl
zplcloud send --usb --file label.bin # USB पर Brother QL
CLI उन फ़ाइल नामों को पहचानता है जो टूल इस्तेमाल करते हैं (.tspl, .epl, .dpl, .sbpl, .cpcl, .escpos, .bin, .pcl, .ezp, .tpcl, .jscript) और उन्हें बिना किसी बदलाव के भेजता है; --raw किसी भी दूसरी फ़ाइल के लिए यही करता है।
एक ही चरण में कन्वर्ट करें और भेजें - CLI आपके लिए API को कॉल करता है:
zplcloud send --target 192.168.1.50 --file label.zpl --language tspl --dpi 300 --compress
वॉच फ़ोल्डर: ERP ZPL ही लिखता रहता है। एजेंट (zplcloud proxy) एक फ़ोल्डर पर नज़र रखता है और हर ZPL फ़ाइल को प्रिंट करने से पहले प्रिंटर की भाषा में बदल देता है। लेबल बनाने वाला सॉफ़्टवेयर बिल्कुल नहीं बदलता - वह अब भी ZPL फ़ाइलें लिखता है, और TSC प्रिंटर को TSPL मिलता है:
{
"name": "tsc-shipping",
"enabled": true,
"folder": "/labels/tsc",
"pattern": "*.zpl",
"targetHost": "192.168.1.50",
"convert": { "language": "tspl", "dpi": 300, "compress": true }
}
रिमोट प्रिंटर: क्लाउड से दूसरे नेटवर्क के प्रिंटर तक। एजेंट zplCloud से एक आउटबाउंड कनेक्शन बनाए रखता है, ताकि किसी दूसरे वेयरहाउस, किसी स्टोर या किसी ग्राहक के यहाँ मौजूद प्रिंटर तक बिना कोई पोर्ट खोले पहुँचा जा सके। आपका सॉफ़्टवेयर एक ही एंडपॉइंट को कॉल करता है - तैयार जॉब के साथ, या ZPL और भाषा के साथ:
curl -X POST https://api.zplcloud.com/v1/remote-printers/4/raw \
-H "X-API-Key: $ZPLCLOUD_API_KEY" -H "Content-Type: application/json" \
-d '{"zpl": "^XA^FO50,50^A0N,40,40^FDHello TSC^FS^XZ", "language": "tspl", "dpi": 203}'
एजेंट जॉब को TCP 9100 या USB पर आगे भेजता है और वापस बताता है कि वह पहुँचा या नहीं।
| जॉब कहाँ जाता है | कमांड या एंडपॉइंट |
|---|---|
| स्थानीय नेटवर्क में प्रिंटर | zplcloud send --target <ip> --file label.tspl |
| USB प्रिंटर | zplcloud send --usb --file label.bin |
| ERP, शॉप या कैरियर सॉफ़्टवेयर से ZPL फ़ाइलें | "convert": { "language": "tspl" } के साथ वॉच फ़ोल्डर |
| दूसरे नेटवर्क में प्रिंटर | POST /v1/remote-printers/{id}/raw या zplcloud send --remote-printer <id> |
| API के ज़रिए वॉच फ़ोल्डर | language या base64 के साथ POST /v1/print/folder |
आपको CLI और एजेंट का संस्करण 1.2.26 या उससे नया चाहिए; पुराने संस्करण हर फ़ाइल को टेक्स्ट के रूप में पढ़ते हैं और इमेज डेटा को खराब कर देते। TCP पर जुड़े प्रिंटर 1.2.22 से ही एजेंट के ज़रिए काम करते हैं।
किन बातों का ध्यान रखें
- रिज़ॉल्यूशन मेल खाना चाहिए। 203 dpi के लिए रेंडर किया गया लेबल 300 dpi प्रिंटर पर लगभग एक तिहाई छोटा प्रिंट होता है। टूल केवल वही रिज़ॉल्यूशन देते हैं जो असली प्रिंटहेड में होते हैं, ताकि आकार 1:1 रहे - अपने प्रिंटर वाला रिज़ॉल्यूशन चुनें।
- मीडिया सेटिंग्स प्रिंटर में ही रहती हैं। जॉब जान-बूझकर प्रिंटर में संग्रहीत गैप, सेंसर या ब्लैक मार्क सेटिंग्स को ओवरराइट नहीं करते। प्रिंटर को एक बार लेबल के आकार पर सेट करें, जैसे आप किसी भी दूसरे जॉब के लिए करते।
- बारकोड मूल की तरह स्कैन होते हैं। बिटमैप बारकोड ठीक उतना ही चौड़ा होता है जितना ZPL ने उसे बनाया था, क्योंकि बार पहले से ही पूरे डॉट थे। यह सिर्फ़ सही रिज़ॉल्यूशन पर सच है - प्रिंटर का dpi चुनने का एक और कारण।
- हर मॉडल पर एक टेस्ट लेबल प्रिंट करें। फ़र्मवेयर संस्करण बारीकियों में अलग होते हैं: वे PCX इमेज कैसे पढ़ते हैं, Easy Plug प्रिंटरों पर इमेज का मूल बिंदु कहाँ है, Toshiba पर रिबन सेटिंग कैसी है। टूल हर जॉब के बगल में ये नोट दिखाते हैं।
- Brother को मॉडल चाहिए। हेड की चौड़ाई, मार्जिन और मीडिया Brother के कमांड रेफ़रेंस से लिए जाते हैं; लेबल को फ़िट होने वाले सबसे संकरे मीडिया पर बीच में रखा जाता है। P-touch टेप प्रिंटर टेप के आर-पार प्रिंट करते हैं।
- अगर प्रिंटर सीधे ZPL समझता है, तो ZPL भेजें। यह छोटा होता है और प्रिंटर अपने फ़ॉन्ट इस्तेमाल कर सकता है। बिटमैप वाला रास्ता उन प्रिंटरों के लिए है जो ZPL नहीं समझते - या उन लेबलों के लिए जहाँ "लगभग हूबहू" काफ़ी नहीं है।
एम्युलेशन कब काफ़ी है?
अगर लेबल में लैटिन टेक्स्ट की कुछ पंक्तियाँ और एक Code 128 है, और प्रिंटर में ZPL एम्युलेशन है, तो पहले उसे आज़माएँ। जैसे ही Unicode टेक्स्ट, TrueType फ़ॉन्ट, लोगो, ^FB टेक्स्ट ब्लॉक या मिश्रित प्रिंटर फ्लीट सामने आते हैं, बिटमैप ज़्यादा सुरक्षित विकल्प है: एक रेंडरिंग, एक नतीजा, हर प्रिंटर पर।
अक्सर पूछे जाने वाले प्रश्न
क्या प्रिंटर को किसी खास फ़र्मवेयर की ज़रूरत है?
नहीं। जॉब हर भाषा के केवल मानक ग्राफ़िक्स कमांड इस्तेमाल करते हैं, जिन्हें उस परिवार का हर प्रिंटर समझता है।
क्या बारकोड अब भी स्कैन किए जा सकते हैं?
हाँ। zplCloud इंजन बारकोड को सटीक डॉट चौड़ाई के साथ बनाता है और वे डॉट दर डॉट प्रिंट होते हैं। पक्का करना चाहें तो उन्हें बारकोड जाँचें से जाँच लें।
क्या प्रिंटर पर टेक्स्ट अब भी टेक्स्ट रहता है?
नहीं। प्रिंटर को एक तस्वीर मिलती है। यही तो मकसद है - प्रिंटर का कोई फ़ॉन्ट लेआउट नहीं बदल सकता - लेकिन इसका मतलब यह भी है कि प्रिंटर काउंटर या फ़ील्ड खुद नहीं भर सकता। इसके बजाय हर डेटा रिकॉर्ड के लिए एक लेबल रेंडर करें; कई लेबल वाली फ़ाइलों के लिए API यह एक ही कॉल में कर देता है।
हमारा सॉफ़्टवेयर सिर्फ़ ZPL फ़ाइलें लिख सकता है। क्या वह फिर भी TSC या Brother प्रिंटर पर प्रिंट कर सकता है?
हाँ। उसे zplCloud एजेंट के ऐसे वॉच फ़ोल्डर पर सेट करें जिसमें "convert": { "language": "tspl" } हो (या brother, dpl …)। एजेंट प्रिंट करने से पहले हर फ़ाइल को कन्वर्ट करता है, और सॉफ़्टवेयर को कभी पता नहीं चलता कि प्रिंटर Zebra नहीं है।
180 dpi प्रिंटरों का क्या?
जहाँ ऐसे प्रिंटर मौजूद हैं, वहाँ समर्थन है: Epson TM-T88 सीरीज़ के लिए 180 dpi पर ESC/POS, और 180 व 360 dpi पर Brother P-touch मॉडल।
क्या यह मुफ़्त है?
वेबसाइट टूल मुफ़्त हैं और इनके लिए अकाउंट की ज़रूरत नहीं है; अनाम उपयोग पर फ़ेयर-यूज़ सीमाएँ लागू होती हैं। API के ज़रिए हर लेबल एक रेंडर के रूप में गिना जाता है; देखें मूल्य।
अपने लेबल के साथ आज़माएँ: टूल में अपना प्रिंटर चुनें, ZPL पेस्ट करें और नतीजा पोर्ट 9100 पर भेजें। अगर आप मिश्रित प्रिंटर फ्लीट संभालते हैं, तो zplCloud प्लेटफ़ॉर्म डिज़ाइनों को एक जगह रखता है - और प्रिंटर टूल यह सुनिश्चित करते हैं कि हर प्रिंटर को वही लेबल मिले।