ब्यौरा
Chromebook पर इंस्टॉल किए गए प्रिंटर पर प्रिंट जॉब भेजने के लिए, chrome.printing
API का इस्तेमाल करें.
अनुमतियां
printing
उपलब्धता
सभी chrome.printing
मेथड और इवेंट के लिए, आपको एक्सटेंशन मेनिफ़ेस्ट में "printing"
अनुमति का एलान करना होगा. उदाहरण के लिए:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
उदाहरण
नीचे दिए गए उदाहरणों में, प्रिंटिंग नेमस्पेस में हर तरीके का इस्तेमाल करके प्रिंट करने का तरीका बताया गया है. यह कोड, एक्सटेंशन-सैंपल GitHub repo में मौजूद 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
प्रॉपर्टी
-
सुविधाएं
ऑब्जेक्ट ज़रूरी नहीं है
सीडीडी फ़ॉर्मैट में प्रिंटर की सुविधाएं. ऐसा हो सकता है कि प्रॉपर्टी मौजूद न हो.
-
स्थिति
प्रिंटर की स्थिति.
JobStatus
प्रिंट जॉब की स्थिति.
Enum
"मंज़ूरी बाकी है"
Chrome पर प्रिंट जॉब मिल गया है, लेकिन उसे अभी तक प्रोसेस नहीं किया गया है.
"IN_PROGRESS"
प्रिंट जॉब को प्रिंट करने के लिए भेजा गया है.
"प्रोसेस पूरी नहीं हुई"
किसी गड़बड़ी की वजह से प्रिंट जॉब बीच में रुक गया.
"रद्द किया गया"
उपयोगकर्ता ने या एपीआई की मदद से प्रिंट जॉब रद्द किया था.
"PRINTED"
प्रिंट जॉब बिना किसी गड़बड़ी के प्रिंट हो गया.
Printer
प्रॉपर्टी
-
ब्यौरा
स्ट्रिंग
प्रिंटर के बारे में ऐसी जानकारी जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है.
-
आईडी
स्ट्रिंग
प्रिंटर का आइडेंटिफ़ायर. यह पक्का है कि डिवाइस पर मौजूद प्रिंटर में से यह आइडेंटिफ़ायर यूनीक होगा.
-
isDefault
बूलियन
यह फ़्लैग दिखाता है कि प्रिंटर, DefaultPrinterSelection के नियमों के मुताबिक है या नहीं. ध्यान दें कि कई प्रिंटर फ़्लैग किए जा सकते हैं.
-
नाम
स्ट्रिंग
प्रिंटर का नाम.
-
recentlyUsedRank
number ज़रूरी नहीं
इस वैल्यू से पता चलता है कि Chrome से प्रिंट करने के लिए, प्रिंटर का इस्तेमाल हाल ही में किया गया है या नहीं. वैल्यू जितनी कम होगी, प्रिंटर का इस्तेमाल उतना ही हाल ही में किया गया होगा. वैल्यू 0 से कम नहीं हो सकती. वैल्यू मौजूद न होने का मतलब है कि प्रिंटर का हाल ही में इस्तेमाल नहीं किया गया है. यह पक्का है कि प्रिंटर के बीच यह वैल्यू यूनीक होगी.
-
source
प्रिंटर का सोर्स (कॉन्फ़िगर किया गया उपयोगकर्ता या नीति).
-
uri
स्ट्रिंग
प्रिंटर का यूआरआई. एक्सटेंशन इसका इस्तेमाल करके, उपयोगकर्ता के लिए प्रिंटर चुन सकते हैं.
PrinterSource
प्रिंटर का सोर्स.
Enum
"USER"
प्रिंटर को उपयोगकर्ता ने जोड़ा था.
"POLICY"
प्रिंटर को नीति के ज़रिए जोड़ा गया था.
PrinterStatus
प्रिंटर की स्थिति.
Enum
"DOOR_OPEN"
प्रिंटर का दरवाज़ा खुला है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"TRAY_MISSING"
प्रिंटर की ट्रे मौजूद नहीं है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"OUT_OF_INK"
प्रिंटर में स्याही खत्म हो गई है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"OUT_OF_PAPER"
प्रिंटर में पेपर खत्म हो गया है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"OUTPUT_FULL"
प्रिंटर में आउटपुट वाली जगह (जैसे, ट्रे) भर गई है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"PAPER_JAM"
प्रिंटर में पेपर जाम हो गया है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"GENERIC_ISSUE"
कोई सामान्य समस्या. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"बंद है"
प्रिंटर बंद है और वह प्रिंट नहीं करता. हालांकि, वह अब भी प्रिंट जॉब स्वीकार करता है.
"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+मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
callback?: function,
)
प्रिंट जॉब का स्टेटस दिखाता है. अगर दिए गए jobId
वाले प्रिंट जॉब का अस्तित्व नहीं है, तो यह कॉल रनटाइम गड़बड़ी के साथ पूरा नहीं होगा. jobId
: प्रिंट जॉब का आईडी, जिसका स्टेटस दिखाना है. यह वही आईडी होना चाहिए जो आपको SubmitJobResponse
में मिला था.
पैरामीटर
-
jobId
स्ट्रिंग
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(status: JobStatus) => void
-
स्थिति
-
रिटर्न
-
Promise<JobStatus>
मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
)
सीडीडी फ़ॉर्मैट में, प्रिंटर की स्थिति और सुविधाओं की जानकारी दिखाता है. अगर दिए गए आईडी वाले कोई प्रिंटर इंस्टॉल नहीं है, तो यह कॉल रनटाइम की गड़बड़ी के साथ फ़ेल हो जाएगा.
पैरामीटर
-
printerId
स्ट्रिंग
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(response: GetPrinterInfoResponse) => void
रिटर्न
-
Promise<GetPrinterInfoResponse>
Chrome 100+मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
getPrinters()
chrome.printing.getPrinters(
callback?: function,
)
डिवाइस पर उपलब्ध प्रिंटर की सूची दिखाता है. इसमें मैन्युअल तरीके से जोड़े गए, एंटरप्राइज़, और अपने-आप जुड़े प्रिंटर शामिल हैं.
पैरामीटर
रिटर्न
-
Promise<Printer[]>
Chrome 100+मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
)
प्रिंट करने के लिए जॉब सबमिट करता है. अगर एक्सटेंशन, PrintingAPIExtensionsAllowlist
नीति में शामिल नहीं है, तो उपयोगकर्ता को प्रिंट जॉब स्वीकार करने के लिए कहा जाता है.
Chrome 120 से पहले, यह फ़ंक्शन कोई प्रॉमिस नहीं दिखाता था.
पैरामीटर
-
CANNOT TRANSLATE
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(response: SubmitJobResponse) => void
-
जवाब
-
रिटर्न
-
Promise<SubmitJobResponse>
Chrome 100+मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
इवेंट
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
जब जॉब की स्थिति बदलती है, तब यह इवेंट ट्रिगर होता है. यह सिर्फ़ इस एक्सटेंशन से बनाई गई नौकरियों के लिए ट्रिगर होता है.