ब्यौरा
Chromebook पर इंस्टॉल किए गए प्रिंटर पर प्रिंट जॉब भेजने के लिए, chrome.printing
API का इस्तेमाल करें.
अनुमतियां
printing
उपलब्धता
मेनिफ़ेस्ट
chrome.printing
के सभी तरीकों और इवेंट के लिए, आपको एक्सटेंशन मेनिफ़ेस्ट में "printing"
की अनुमति का एलान करना होगा. उदाहरण के लिए:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
उदाहरण
नीचे दिए गए उदाहरणों में, प्रिंटिंग नेमस्पेस में हर तरीके का इस्तेमाल करने के बारे में बताया गया है. यह कोड, एक्सटेंशन-सैंपल GitHub रेपो में मौजूद api-samples/printing से कॉपी किया गया है या उनके आधार पर बनाया गया है.
cancelJob()
इस उदाहरण में, onJobStatusChanged
हैंडलर का इस्तेमाल करके 'रद्द करें' बटन को छिपाया गया है. ऐसा तब किया जाता है, जब jobStatus
न तो PENDING
हो और न ही IN_PROGRESS
. ध्यान दें कि कुछ नेटवर्क पर या जब Chromebook सीधे प्रिंटर से कनेक्ट किया जाता है, तो ये स्थितियां बहुत जल्दी से पास हो जाती हैं. इसकी वजह यह हो सकती है कि 'रद्द करें' बटन इतनी तेज़ी से न दिखे कि उसे कॉल किया जा सके. यह बहुत ही आसान तरीके से प्रिंट करने का उदाहरण है.
chrome.printing.onJobStatusChanged.addListener((jobId, status) => {
const cancelButton = document.getElementById("cancelButton");
cancelButton.addEventListener('click', () => {
chrome.printing.cancelJob(jobId).then((response) => {
if (response !== undefined) {
console.log(response.status);
}
if (chrome.runtime.lastError !== undefined) {
console.log(chrome.runtime.lastError.message);
}
});
});
if (status !== "PENDING" && status !== "IN_PROGRESS") {
cancelButton.style.visibility = 'hidden';
} else {
cancelButton.style.visibility = 'visible';
}
}
getPrinters() and getPrinterInfo()
इन फ़ंक्शन के लिए एक ही उदाहरण का इस्तेमाल किया गया है, क्योंकि प्रिंटर की जानकारी पाने के लिए प्रिंटर आईडी की ज़रूरत होती है. इसे getPrinters()
को कॉल करके पाया जाता है. यह उदाहरण कंसोल में डिफ़ॉल्ट प्रिंटर का नाम और जानकारी लॉग करता है. यह प्रिंट करने के उदाहरण का आसान वर्शन है.
const printers = await chrome.printing.getPrinters();
const defaultPrinter = printers.find((printer) => {
const printerInfo = await chrome.printing.getPrinterInfo(printer.id);
return printerInfo.isDefault;
}
console.log(`Default printer: ${defaultPrinter.name}.\n\t${defaultPrinter.description}`);
submitJob()
submitJob()
तरीके के लिए तीन चीज़ों की ज़रूरत होती है.
ticket
स्ट्रक्चर, यह तय करता है कि प्रिंटर की किन क्षमताओं का इस्तेमाल किया जाएगा. अगर उपयोगकर्ता को उपलब्ध क्षमताओं में से किसी को चुनना हो, तोgetPrinterInfo()
का इस्तेमाल करके किसी खास प्रिंटर के लिए, उपयोगकर्ता की पहचान की जा सकती है.SubmitJobRequest
स्ट्रक्चर, जिसमें प्रिंटर और प्रिंट करने के लिए फ़ाइल या तारीख की जानकारी होती है. इस स्ट्रक्चर मेंticket
स्ट्रक्चर का रेफ़रंस है.- प्रिंट करने के लिए, फ़ाइल या डेटा का ब्लॉब.
submitJob()
को कॉल करने पर एक डायलॉग बॉक्स ट्रिगर होता है. इस बॉक्स में, उपयोगकर्ता से प्रिंटिंग की पुष्टि करने के लिए कहा जाता है. पुष्टि करने की प्रक्रिया को बायपास करने के लिए, PrintingAPIExtensionsAllowlist
का इस्तेमाल करें.
यह प्रिंटिंग उदाहरण का आसान वर्शन है. ध्यान दें कि ticket
, SubmitJobRequest
स्ट्रक्चर (लाइन 8) से जुड़ा है और प्रिंट करने के लिए डेटा को ब्लॉब (लाइन 10) में बदल दिया गया है. सैंपल में प्रिंटर का आईडी (लाइन 1) पाना, यहां दिखाए गए तरीके से ज़्यादा मुश्किल है.
const defaultPrinter = getDefaultPrinter();
const ticket = getPrinterTicket(defaultPrinter);
const arrayBuffer = getPrintData();
const submitJobRequest = {
job: {
printerId: defaultPrinter,
title: 'test job',
ticket: ticket,
contentType: 'application/pdf',
document: new Blob([new Uint8Array(arrayBuffer)], {
type: 'application/pdf'
});
}
};
chrome.printing.submitJob(submitJobRequest, (response) => {
if (response !== undefined) {
console.log(response.status);
}
if (chrome.runtime.lastError !== undefined) {
console.log(chrome.runtime.lastError.message);
}
});
रोल प्रिंटिंग
इस उदाहरण में लगातार (या रोल) प्रिंटिंग के लिए प्रिंटर टिकट बनाने का तरीका बताया गया है, जिसका इस्तेमाल अक्सर रसीद प्रिंटिंग के साथ किया जाता है. रोल प्रिंटिंग के लिए submitJobRequest
ऑब्जेक्ट वही है जो submitJob()
के उदाहरण में दिखाया गया है.
अगर आपको पेपर कटिंग के लिए डिफ़ॉल्ट वैल्यू बदलनी है, तो vendor_ticket_item
बटन का इस्तेमाल करें. (डिफ़ॉल्ट सेटिंग, प्रिंटर के हिसाब से अलग-अलग होती है.) शामिल किए जाने पर, यह कुंजी एक सदस्य वाली अरे होनी चाहिए: एक ऑब्जेक्ट जिसका id
, 'finishings'
है. यह वैल्यू, प्रिंट करने के आखिर में रोल को काटने वाले प्रिंटर के लिए 'trim'
या प्रिंट जॉब को फाड़ने वाले प्रिंटर के लिए 'none'
हो सकती है.
const ticket = {
version: '1.0',
print: {
vendor_ticket_item: [{id: 'finishings', value: 'trim'}],
color: {type: 'STANDARD_MONOCHROME'},
duplex: {type: 'NO_DUPLEX'},
page_orientation: {type: 'PORTRAIT'},
copies: {copies: 1},
dpi: {horizontal_dpi: 300, vertical_dpi: 300},
media_size: {
width_microns: 72320,
height_microns: 100000
},
collate: {collate: false}
}
};
कुछ प्रिंटर में "finishings"
विकल्प काम नहीं करता. यह पता करने के लिए कि आपका प्रिंटर इस सुविधा के साथ काम करता है या नहीं, getPrinterInfo()
को कॉल करें और "finishings/11"
के "display_name"
को देखें.
"vendor_capability": [
{
"display_name": "finishings/11",
"id": "finishings/11",
"type": "TYPED_VALUE",
"typed_value_cap": {
"value_type": "BOOLEAN"
}
},
...
]
टिकट की media_size
कुंजी में मौजूद वैल्यू, हर प्रिंटर के हिसाब से होती हैं. सही साइज़ चुनने के लिए, getPrinterInfo()
को कॉल करें. दिए गए GetPrinterResponse
में "media_size"."option"
पर काम करने वाले मीडिया साइज़ का कलेक्शन मौजूद है. ऐसा विकल्प चुनें जिसकी "is_continuous_feed"
वैल्यू सही हो. टिकट के लिए, इसकी ऊंचाई और चौड़ाई की वैल्यू का इस्तेमाल करें.
"media_size": {
"option": [
{
"custom_display_name": "",
"is_continuous_feed": true,
"max_height_microns": 2000000,
"min_height_microns": 25400,
"width_microns": 50800
},
...
]
}
टाइप
GetPrinterInfoResponse
प्रॉपर्टी
-
सुविधाएं
ऑब्जेक्ट ज़रूरी नहीं
CDD फ़ॉर्मैट में प्रिंटर की सुविधाएं. ऐसा हो सकता है कि प्रॉपर्टी मौजूद न हो.
-
स्थिति
प्रिंटर की स्थिति.
JobStatus
प्रिंट जॉब की स्थिति.
Enum
"मंज़ूरी बाकी"
प्रिंट जॉब Chrome की ओर से मिल गया है, लेकिन अभी तक प्रोसेस नहीं किया गया है.
"IN_PROGRESS"
प्रिंट जॉब को प्रिंट करने के लिए भेजा गया है.
"प्रोसेस पूरी नहीं हुई"
किसी गड़बड़ी की वजह से प्रिंट जॉब बीच में रुक गया.
"रद्द किया गया"
उपयोगकर्ता ने या एपीआई की मदद से प्रिंट जॉब रद्द किया था.
"प्रिंट किया गया"
प्रिंट जॉब बिना किसी गड़बड़ी के प्रिंट किया गया.
Printer
प्रॉपर्टी
-
ब्यौरा
स्ट्रिंग
प्रिंटर के बारे में ऐसी जानकारी जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है.
-
आईडी
स्ट्रिंग
प्रिंटर का आइडेंटिफ़ायर. यह पक्का है कि डिवाइस पर मौजूद प्रिंटर में से यह आइडेंटिफ़ायर यूनीक होगा.
-
isDefault
बूलियन
यह फ़्लैग दिखाता है कि प्रिंटर, DefaultPrinterSelection के नियमों के मुताबिक है या नहीं. ध्यान दें कि कई प्रिंटर फ़्लैग किए जा सकते हैं.
-
नाम
स्ट्रिंग
प्रिंटर का नाम.
-
recentlyUsedRank
number ज़रूरी नहीं
इस वैल्यू से पता चलता है कि Chrome से प्रिंट करने के लिए, प्रिंटर का इस्तेमाल हाल ही में किया गया है या नहीं. वैल्यू जितनी कम होगी, प्रिंटर का इस्तेमाल उतना ही हाल ही में किया गया होगा. वैल्यू 0 से कम नहीं हो सकती. वैल्यू मौजूद न होने का मतलब है कि प्रिंटर का इस्तेमाल हाल ही में नहीं किया गया है. हर प्रिंटर के लिए यह वैल्यू यूनीक होगी.
-
source
प्रिंटर का सोर्स (कॉन्फ़िगर किया गया उपयोगकर्ता या नीति).
-
यूआरआई
स्ट्रिंग
प्रिंटर का यूआरआई. एक्सटेंशन इसका इस्तेमाल करके, उपयोगकर्ता के लिए प्रिंटर चुन सकते हैं.
PrinterSource
प्रिंटर का सोर्स.
Enum
"USER"
प्रिंटर को उपयोगकर्ता ने जोड़ा था.
"POLICY"
प्रिंटर को नीति के ज़रिए जोड़ा गया.
PrinterStatus
प्रिंटर की स्थिति.
Enum
"DOOR_OPEN"
प्रिंटर का दरवाज़ा खुला है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"TRAY_MISSING"
प्रिंटर की ट्रे मौजूद नहीं है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"OUT_OF_INK"
प्रिंटर में स्याही नहीं है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"OUT_OF_PAPER"
प्रिंटर में पेपर खत्म हो गया है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"OUTPUT_FULL"
प्रिंटर (जैसे कि ट्रे) का आउटपुट एरिया भर गया है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"PAPER_JAM"
प्रिंटर में पेपर जाम हो गया है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"GENERIC_ISSUE"
कोई सामान्य समस्या. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"STOPPED"
प्रिंटर बंद हो गया है और प्रिंट नहीं होता है, लेकिन फिर भी प्रिंट जॉब स्वीकार करता है.
"UNREACHABLE"
प्रिंटर कनेक्ट नहीं हो पा रहा है और प्रिंट जॉब स्वीकार नहीं कर रहा है.
"EXPIRED_CERTIFICATE"
एसएसएल सर्टिफ़िकेट की समयसीमा खत्म हो गई है. प्रिंटर जॉब स्वीकार करता है, लेकिन वे फ़ेल हो जाते हैं.
"उपलब्ध"
प्रिंटर उपलब्ध है.
SubmitJobRequest
प्रॉपर्टी
-
नौकरी
सबमिट किया जाने वाला प्रिंट जॉब. सिर्फ़ "application/pdf" टाइप का कॉन्टेंट इस्तेमाल किया जा सकता है. साथ ही, Cloud जॉब टिकट में
FitToPageTicketItem
,PageRangeTicketItem
,ReverseOrderTicketItem
, औरVendorTicketItem
फ़ील्ड शामिल नहीं होने चाहिए, क्योंकि ये नेटिव प्रिंटिंग के लिए काम के नहीं हैं. अन्य सभी फ़ील्ड मौजूद होने चाहिए.
SubmitJobResponse
प्रॉपर्टी
-
jobId
स्ट्रिंग ज़रूरी नहीं
बनाए गए प्रिंट जॉब का आईडी. यह डिवाइस पर मौजूद सभी प्रिंट जॉब में से एक यूनीक आइडेंटिफ़ायर है. अगर स्थिति ठीक नहीं है, तो jobId शून्य होगा.
-
स्थिति
अनुरोध की स्थिति.
SubmitJobStatus
submitJob
अनुरोध की स्थिति.
Enum
"ठीक है"
प्रिंट जॉब का भेजा गया अनुरोध स्वीकार कर लिया गया है.
"USER_REJECTED"
भेजे गए प्रिंट जॉब अनुरोध को उपयोगकर्ता ने अस्वीकार कर दिया.
प्रॉपर्टी
MAX_GET_PRINTER_INFO_CALLS_PER_MINUTE
हर मिनट में getPrinterInfo
को ज़्यादा से ज़्यादा कितनी बार कॉल किया जा सकता है.
मान
20
MAX_SUBMIT_JOB_CALLS_PER_MINUTE
हर मिनट submitJob
को ज़्यादा से ज़्यादा कितनी बार कॉल किया जा सकता है.
मान
40
तरीके
cancelJob()
chrome.printing.cancelJob(
jobId: string,
callback?: function,
)
पहले सबमिट किए गए जॉब को रद्द करता है.
पैरामीटर
-
jobId
स्ट्रिंग
जिस प्रिंट जॉब को रद्द करना है उसका आईडी. यह वही आईडी होना चाहिए जो
SubmitJobResponse
में मिला है. -
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:() => void
रिटर्न
-
Promise<void>
Chrome 100 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
)
सीडीडी फ़ॉर्मैट में, प्रिंटर की स्थिति और सुविधाओं की जानकारी दिखाता है. अगर दिए गए आईडी वाले कोई प्रिंटर इंस्टॉल नहीं है, तो यह कॉल रनटाइम की गड़बड़ी के साथ फ़ेल हो जाएगा.
पैरामीटर
-
printerId
स्ट्रिंग
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(response: GetPrinterInfoResponse) => void
रिटर्न
-
Promise<GetPrinterInfoResponse>
Chrome 100 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
getPrinters()
chrome.printing.getPrinters(
callback?: function,
)
डिवाइस पर उपलब्ध प्रिंटर की सूची दिखाता है. इसमें मैन्युअल तरीके से जोड़े गए, एंटरप्राइज़, और 'डिस्कवर किए गए प्रिंटर' शामिल हैं.
पैरामीटर
रिटर्न
-
वादा<प्रिंटर[]>
Chrome 100+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
)
प्रिंट करने के लिए जॉब सबमिट करता है. अगर PrintingAPIExtensionsAllowlist
नीति में एक्सटेंशन शामिल नहीं है, तो उपयोगकर्ता से प्रिंट जॉब स्वीकार करने के लिए कहा जाएगा.
Chrome 120 से पहले, यह फ़ंक्शन कोई प्रॉमिस नहीं दिखाता था.
पैरामीटर
-
CANNOT TRANSLATE
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(response: SubmitJobResponse) => void
-
जवाब
-
रिटर्न
-
Promise<SubmitJobResponse>
Chrome 100+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
इवेंट
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
जब जॉब की स्थिति बदलती है, तब यह इवेंट ट्रिगर होता है. यह सिर्फ़ इस एक्सटेंशन से बनाई गई नौकरियों के लिए ट्रिगर होता है.