ब्यौरा
Chromebook पर इंस्टॉल किए गए प्रिंटर पर प्रिंट जॉब भेजने के लिए, chrome.printing
API का इस्तेमाल करें.
अनुमतियां
printing
उपलब्धता
सभी chrome.printing
तरीकों और इवेंट के लिए, आपको एक्सटेंशन मेनिफ़ेस्ट में "printing"
अनुमति का एलान करना होगा. उदाहरण के लिए:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
उदाहरण
नीचे दिए गए उदाहरणों में, प्रिंटिंग नेमस्पेस में हर तरीके का इस्तेमाल करने का तरीका दिखाया गया है. यह कोड, extensions-samples 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) में बदल दिया जाता है. प्रिंटर का आईडी (पहली लाइन) पाना, यहां दिखाए गए सैंपल से ज़्यादा मुश्किल है.
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
प्रॉपर्टी
-
अनुमतियां
object ज़रूरी नहीं है
CDD फ़ॉर्मैट में प्रिंटर की सुविधाएं. ऐसा हो सकता है कि प्रॉपर्टी मौजूद न हो.
-
स्थिति
प्रिंटर की स्थिति.
JobStatus
प्रिंट जॉब की स्थिति.
Enum
"PENDING"
प्रिंट करने का अनुरोध Chrome को मिल गया है, लेकिन अब तक इस पर कार्रवाई नहीं की गई है.
"IN_PROGRESS"
प्रिंट करने के लिए प्रिंट जॉब भेजा गया है.
"FAILED"
किसी गड़बड़ी की वजह से प्रिंटिंग का काम पूरा नहीं हो सका.
"CANCELED"
प्रिंट जॉब को उपयोगकर्ता या एपीआई के ज़रिए रद्द कर दिया गया है.
"PRINTED"
प्रिंट जॉब को बिना किसी गड़बड़ी के प्रिंट किया गया.
Printer
प्रॉपर्टी
-
ब्यौरा
स्ट्रिंग
प्रिंटर के बारे में ऐसी जानकारी जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है.
-
आईडी
स्ट्रिंग
प्रिंटर का आइडेंटिफ़ायर. यह डिवाइस पर मौजूद प्रिंटर के लिए यूनीक होता है.
-
isDefault
बूलियन
यह फ़्लैग दिखाता है कि प्रिंटर, DefaultPrinterSelection के नियमों के मुताबिक है या नहीं. ध्यान दें कि कई प्रिंटर फ़्लैग किए जा सकते हैं.
-
नाम
स्ट्रिंग
प्रिंटर का नाम.
-
recentlyUsedRank
number ज़रूरी नहीं
इस वैल्यू से पता चलता है कि Chrome से प्रिंट करने के लिए, प्रिंटर का इस्तेमाल कब किया गया था. वैल्यू जितनी कम होगी, प्रिंटर का इस्तेमाल उतनी ही हाल ही में किया गया होगा. कम से कम वैल्यू 0 होनी चाहिए. वैल्यू मौजूद न होने का मतलब है कि हाल ही में प्रिंटर का इस्तेमाल नहीं किया गया है. यह वैल्यू, प्रिंटर के हिसाब से यूनीक होती है.
-
source
प्रिंटर का सोर्स (उपयोगकर्ता या कॉन्फ़िगर की गई नीति).
-
uri
स्ट्रिंग
प्रिंटर का यूआरआई. एक्सटेंशन इसका इस्तेमाल, उपयोगकर्ता के लिए प्रिंटर चुनने के लिए कर सकते हैं.
PrinterSource
प्रिंटर का सोर्स.
Enum
"USER"
उपयोगकर्ता ने प्रिंटर जोड़ा.
"नीति"
नीति के ज़रिए प्रिंटर जोड़ा गया.
PrinterStatus
प्रिंटर की स्थिति.
Enum
"DOOR_OPEN"
प्रिंटर का दरवाज़ा खुला है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"TRAY_MISSING"
प्रिंटर की ट्रे मौजूद नहीं है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"OUT_OF_INK"
प्रिंटर में स्याही खत्म हो गई है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"OUT_OF_PAPER"
प्रिंटर में पेपर खत्म हो गया है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"OUTPUT_FULL"
प्रिंटर में आउटपुट वाली जगह (जैसे कि ट्रे) भर गई है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"PAPER_JAM"
प्रिंटर में पेपर जाम हो गया है. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"GENERIC_ISSUE"
कोई सामान्य समस्या. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.
"STOPPED"
प्रिंटर बंद है और प्रिंट नहीं करता, लेकिन अब भी प्रिंट जॉब स्वीकार करता है.
"UNREACHABLE"
प्रिंटर कनेक्ट नहीं हो पा रहा है और प्रिंट जॉब स्वीकार नहीं कर रहा है.
"EXPIRED_CERTIFICATE"
एसएसएल सर्टिफ़िकेट की समयसीमा खत्म हो गई है. प्रिंटर, जॉब स्वीकार करता है, लेकिन वे पूरे नहीं होते.
"AVAILABLE"
प्रिंटर उपलब्ध है.
SubmitJobRequest
प्रॉपर्टी
-
नौकरी
प्रिंट जॉब सबमिट किया जाना है. "application/pdf" और "image/png" कॉन्टेंट टाइप का इस्तेमाल किया जा सकता है. Cloud Job Ticket में
FitToPageTicketItem
,PageRangeTicketItem
, औरReverseOrderTicketItem
फ़ील्ड शामिल नहीं होने चाहिए, क्योंकि ये नेटिव प्रिंटिंग के लिए काम के नहीं हैं.VendorTicketItem
वैकल्पिक है. अन्य सभी फ़ील्ड मौजूद होने चाहिए.
SubmitJobResponse
प्रॉपर्टी
-
jobId
string ज़रूरी नहीं है
बनाए गए प्रिंट जॉब का आईडी. यह डिवाइस पर मौजूद सभी प्रिंट जॉब के लिए यूनीक आइडेंटिफ़ायर होता है. अगर स्टेटस ठीक नहीं है, तो 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,
): Promise<void>
पहले सबमिट किए गए जॉब को रद्द करता है.
पैरामीटर
-
jobId
स्ट्रिंग
प्रिंट जॉब का वह आईडी जिसे रद्द करना है. यह वही आईडी होना चाहिए जो
SubmitJobResponse
में मिला था.
रिटर्न
-
Promise<void>
Chrome 100+
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
): Promise<JobStatus>
प्रिंट जॉब का स्टेटस दिखाता है. अगर दिए गए jobId
वाला प्रिंट जॉब मौजूद नहीं है, तो यह कॉल रनटाइम गड़बड़ी के साथ पूरा नहीं होगा. jobId
: उस प्रिंट जॉब का आईडी जिसके लिए स्टेटस की जानकारी चाहिए. यह वही आईडी होना चाहिए जो SubmitJobResponse
में मिला था.
पैरामीटर
-
jobId
स्ट्रिंग
रिटर्न
-
Promise<JobStatus>
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
): Promise<GetPrinterInfoResponse>
यह CDD फ़ॉर्मैट में, प्रिंटर की स्थिति और उसकी सुविधाओं की जानकारी देता है. अगर दिए गए आईडी वाले कोई भी प्रिंटर इंस्टॉल नहीं किए गए हैं, तो यह कॉल रनटाइम गड़बड़ी के साथ पूरा नहीं होगा.
पैरामीटर
-
printerId
स्ट्रिंग
रिटर्न
-
Promise<GetPrinterInfoResponse>
Chrome 100+
getPrinters()
chrome.printing.getPrinters(): Promise<Printer[]>
यह डिवाइस पर उपलब्ध प्रिंटर की सूची दिखाता है. इसमें मैन्युअल तरीके से जोड़े गए, एंटरप्राइज़, और खोजे गए प्रिंटर शामिल हैं.
रिटर्न
-
Promise<Printer[]>
Chrome 100+
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
): Promise<SubmitJobResponse>
प्रिंट करने के लिए जॉब सबमिट करता है. अगर एक्सटेंशन को PrintingAPIExtensionsAllowlist
नीति में शामिल नहीं किया गया है, तो उपयोगकर्ता को प्रिंट जॉब स्वीकार करने के लिए कहा जाता है.
Chrome 120 से पहले, यह फ़ंक्शन प्रॉमिस नहीं दिखाता था.
पैरामीटर
-
CANNOT TRANSLATE
रिटर्न
-
Promise<SubmitJobResponse>
Chrome 100+
इवेंट
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
जब काम की स्थिति बदलती है, तब यह इवेंट ट्रिगर होता है. यह इवेंट सिर्फ़ इस एक्सटेंशन से बनाई गई नौकरियों के लिए ट्रिगर होता है.