कंपनी का ब्यौरा
Chromebook पर इंस्टॉल किए गए प्रिंटर को प्रिंट जॉब भेजने के लिए, chrome.printing
API का इस्तेमाल करें.
अनुमतियां
printing
उपलब्धता
chrome.printing
के सभी तरीकों और इवेंट के लिए, यह ज़रूरी है कि आप एक्सटेंशन मेनिफ़ेस्ट में "printing"
की अनुमति के बारे में जानकारी दें. उदाहरण के लिए:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
उदाहरण
नीचे दिए गए उदाहरणों में, प्रिंटिंग नेमस्पेस के हर तरीके का इस्तेमाल करने के बारे में बताया गया है. इस कोड को एक्सटेंशन-सैंपल GitHub रेपो में मौजूद api-samples/printing से या उसके आधार पर कॉपी किया जाता है.
रद्द करें जॉब()
इस उदाहरण में, jobStatus
के PENDING
या IN_PROGRESS
न होने पर, 'रद्द करें' बटन को छिपाने के लिए onJobStatusChanged
हैंडलर का इस्तेमाल किया गया है. ध्यान दें कि कुछ नेटवर्क पर या जब कोई 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()
वाले तरीके के लिए तीन चीज़ों की ज़रूरत होती है.
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
प्रॉपर्टी
-
capabilities
ऑब्जेक्ट ज़रूरी नहीं
सीडीडी फ़ॉर्मैट में प्रिंटर की सुविधा. ऐसा हो सकता है कि प्रॉपर्टी मौजूद न हो.
-
status
प्रिंटर की स्थिति.
JobStatus
प्रिंट जॉब की स्थिति.
Enum
"मंज़ूरी बाकी है"
Chrome की ओर से प्रिंट जॉब मिला, लेकिन उसे अभी तक प्रोसेस नहीं किया गया है.
"IN_PROGRESS"
प्रिंट जॉब प्रिंट करने के लिए भेज दिया गया है.
"फ़ेल"
किसी गड़बड़ी की वजह से प्रिंट जॉब में रुकावट आई.
"रद्द किया गया"
प्रिंट जॉब को उपयोगकर्ता ने या एपीआई के ज़रिए रद्द कर दिया.
"प्रिंट किया गया"
प्रिंट जॉब बिना किसी गड़बड़ी के प्रिंट हो गया.
Printer
प्रॉपर्टी
-
ब्यौरा
स्ट्रिंग
प्रिंटर के बारे में ऐसी जानकारी जिसे कोई भी व्यक्ति आसानी से पढ़ सके.
-
आईडी
स्ट्रिंग
प्रिंटर का आइडेंटिफ़ायर; डिवाइस के प्रिंटर से अलग होने की गारंटी है.
-
isDefault
boolean
वह फ़्लैग जो दिखाता है कि प्रिंटर DefaultPrinterSelection नियमों के हिसाब से है या नहीं. ध्यान दें कि कई प्रिंटर फ़्लैग किए जा सकते हैं.
-
नाम
स्ट्रिंग
प्रिंटर का नाम.
-
recentlyUsedRank
नंबर ज़रूरी नहीं
इस वैल्यू से पता चलता है कि 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"
कुछ सामान्य समस्या है. प्रिंटर में अब भी प्रिंट जॉब इस्तेमाल किए जा सकते हैं.
"STOPPED"
प्रिंटर बंद है और प्रिंट नहीं करता है, लेकिन अब भी प्रिंट जॉब स्वीकार करता है.
"पहुंच से बाहर है"
प्रिंटर पहुंच से बाहर है और यह प्रिंट जॉब स्वीकार नहीं करता.
"EXPIRED_CERTIFICATE"
एसएसएल सर्टिफ़िकेट की समयसीमा खत्म हो गई है. प्रिंटर जॉब स्वीकार करता है, लेकिन वह फ़ेल हो जाता है.
"Available"
प्रिंटर उपलब्ध है.
SubmitJobRequest
प्रॉपर्टी
-
नौकरी
सबमिट किया जाने वाला प्रिंट जॉब. सिर्फ़ "ऐप्लिकेशन/pdf" कॉन्टेंट का इस्तेमाल किया जा सकता है. क्लाउड जॉब टिकट में
FitToPageTicketItem
,PageRangeTicketItem
,ReverseOrderTicketItem
, औरVendorTicketItem
फ़ील्ड शामिल नहीं होने चाहिए, क्योंकि ये नेटिव प्रिंटिंग के लिए काम के नहीं हैं. बाकी सभी फ़ील्ड मौजूद होने चाहिए.
SubmitJobResponse
प्रॉपर्टी
-
jobId
स्ट्रिंग ज़रूरी नहीं
बनाए गए प्रिंट जॉब का आईडी. यह डिवाइस पर सभी प्रिंट जॉब में से एक यूनीक आइडेंटिफ़ायर है. अगर स्थिति ठीक नहीं है, तो जॉब आईडी शून्य हो जाएगा.
-
status
अनुरोध की स्थिति.
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,
)
जॉब की स्थिति बदलने पर इवेंट सक्रिय हो गया. यह सिर्फ़ उन जॉब के लिए चालू किया जाता है जिन्हें इस एक्सटेंशन से बनाया गया है.