ब्यौरा
Chromebook पर इंस्टॉल किए गए प्रिंटर को प्रिंट जॉब भेजने के लिए, chrome.printing एपीआई का इस्तेमाल करें.
अनुमतियां
printingउपलब्धता
सभी browser.printing तरीकों और इवेंट के लिए, आपको एक्सटेंशन मेनिफ़ेस्ट में "printing" अनुमति का एलान करना होगा. उदाहरण के लिए:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
उदाहरण
यहां दिए गए उदाहरणों में, प्रिंटिंग नेमस्पेस में मौजूद हर तरीके का इस्तेमाल दिखाया गया है. यह कोड, extensions-samples Github डेटा स्टोर करने की जगह में मौजूद api-samples/printing से कॉपी किया गया है या उस पर आधारित है.
cancelJob()
इस उदाहरण में, onJobStatusChanged हैंडलर का इस्तेमाल करके 'रद्द करें' बटन को तब छिपाया जाता है, जब jobStatus न तो PENDING हो और न ही IN_PROGRESS. ध्यान दें कि कुछ नेटवर्क पर या जब Chromebook सीधे प्रिंटर से कनेक्ट होता है, तो ये स्थितियां बहुत तेज़ी से बदल सकती हैं. इस वजह से, हो सकता है कि 'रद्द करें' बटन इतनी देर तक न दिखे कि उसे दबाया जा सके. यह प्रिंट करने का एक आसान उदाहरण है.
browser.printing.onJobStatusChanged.addListener((jobId, status) => {
const cancelButton = document.getElementById("cancelButton");
cancelButton.addEventListener('click', () => {
browser.printing.cancelJob(jobId).then((response) => {
if (response !== undefined) {
console.log(response.status);
}
if (browser.runtime.lastError !== undefined) {
console.log(browser.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 browser.printing.getPrinters();
const defaultPrinter = printers.find((printer) => {
const printerInfo = await browser.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'
});
}
};
browser.printing.submitJob(submit>JobRequest, (response) = {
if (response !== undefined) {
console.log(response.status);
}
if (browser.runtime.lastError !== undefined) {
console.log(browser.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 ज़रूरी नहीं
सीडीडी फ़ॉर्मैट में प्रिंटर की क्षमताएं. ऐसा हो सकता है कि प्रॉपर्टी मौजूद न हो.
-
स्थिति
प्रिंटर का स्टेटस.
JobStatus
प्रिंट जॉब का स्टेटस.
Enum
"PENDING"
Chrome को प्रिंट जॉब मिल गया है, लेकिन उसे अब तक प्रोसेस नहीं किया गया है.
"IN_PROGRESS"
प्रिंट जॉब को प्रिंट करने के लिए भेजा गया है.
"FAILED"
किसी गड़बड़ी की वजह से, प्रिंट जॉब में रुकावट आई.
"CANCELED"
उपयोगकर्ता या एपीआई ने प्रिंट जॉब को रद्द कर दिया है.
"PRINTED"
प्रिंट जॉब को बिना किसी गड़बड़ी के प्रिंट किया गया.
Printer
प्रॉपर्टी
-
ब्यौरा
स्ट्रिंग
प्रिंटर के बारे में ऐसी जानकारी जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है.
-
आईडी
स्ट्रिंग
प्रिंटर का आइडेंटिफ़ायर. यह पक्का किया जाता है कि डिवाइस पर मौजूद प्रिंटर के बीच यह यूनीक हो.
-
isDefault
बूलियन
वह फ़्लैग जिससे पता चलता है कि प्रिंटर, DefaultPrinterSelection के नियमों के मुताबिक है या नहीं. ध्यान दें कि कई प्रिंटर फ़्लैग किए जा सकते हैं.
-
नाम
स्ट्रिंग
प्रिंटर का नाम.
-
recentlyUsedRank
number ज़रूरी नहीं
यह वैल्यू बताती है कि Chrome से प्रिंट करने के लिए, प्रिंटर का इस्तेमाल हाल ही में कब किया गया था. वैल्यू जितनी कम होगी, प्रिंटर का इस्तेमाल उतना ही हाल ही में किया गया होगा. कम से कम वैल्यू 0 है. वैल्यू मौजूद न होने का मतलब है कि प्रिंटर का इस्तेमाल हाल ही में नहीं किया गया है. यह वैल्यू, सभी प्रिंटर के लिए यूनीक होती है.
-
सोर्स
प्रिंटर का सोर्स (उपयोगकर्ता या नीति के हिसाब से कॉन्फ़िगर किया गया).
-
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"
एसएसएल सर्टिफ़िकेट की समयसीमा खत्म हो गई है. प्रिंटर, प्रिंट जॉब स्वीकार करता है, लेकिन वे पूरे नहीं हो पाते.
"उपलब्ध है"
प्रिंटर उपलब्ध है.
SubmitJobRequest
प्रॉपर्टी
-
काम
सबमिट किया जाने वाला प्रिंट जॉब. "application/pdf" और "image/png" टाइप के कॉन्टेंट का इस्तेमाल किया जा सकता है. Cloud Job Ticket में
FitToPageTicketItem,PageRangeTicketItem, औरReverseOrderTicketItemफ़ील्ड शामिल नहीं होने चाहिए. ऐसा इसलिए, क्योंकि नेटिव प्रिंटिंग के लिए ये ज़रूरी नहीं हैं.VendorTicketItemज़रूरी नहीं है. अन्य सभी फ़ील्ड मौजूद होने चाहिए.
SubmitJobResponse
प्रॉपर्टी
-
jobId
string ज़रूरी नहीं
बनाए गए प्रिंट जॉब का आईडी. यह डिवाइस पर मौजूद सभी प्रिंट जॉब के बीच एक यूनीक आइडेंटिफ़ायर होता है. अगर स्टेटस OK नहीं है, तो jobId की वैल्यू शून्य होगी.
-
स्थिति
अनुरोध का स्टेटस.
SubmitJobStatus
submitJob के अनुरोध का स्टेटस.
Enum
"ठीक है"
प्रिंट जॉब का अनुरोध स्वीकार कर लिया गया है.
"USER_REJECTED"
उपयोगकर्ता ने प्रिंट जॉब के अनुरोध को अस्वीकार कर दिया है.
प्रॉपर्टी
MAX_GET_PRINTER_INFO_CALLS_PER_MINUTE
हर मिनट में ज़्यादा से ज़्यादा कितनी बार getPrinterInfo को कॉल किया जा सकता है.
वैल्यू
20
MAX_SUBMIT_JOB_CALLS_PER_MINUTE
हर मिनट में ज़्यादा से ज़्यादा कितनी बार submitJob को कॉल किया जा सकता है.
वैल्यू
40
तरीके
cancelJob()
browser.printing.cancelJob(
jobId: string,
): Promise<void>
पहले सबमिट किए गए काम को रद्द करता है.
पैरामीटर
-
jobId
स्ट्रिंग
रद्द किए जाने वाले प्रिंट जॉब का आईडी. यह वही आईडी होना चाहिए जो
SubmitJobResponseमें मिला है.
रिटर्न
-
वादा<शून्य>
Chrome 100+ Chrome 148 से browser.*
getJobStatus()
browser.printing.getJobStatus(
jobId: string,
): Promise<JobStatus>
प्रिंट जॉब का स्टेटस दिखाता है. अगर दिए गए jobId वाला प्रिंट जॉब मौजूद नहीं है, तो यह कॉल रनटाइम से जुड़ी गड़बड़ी की वजह से पूरा नहीं हो पाएगा. jobId: प्रिंट जॉब का आईडी, जिसका स्टेटस देखना है. यह वही आईडी होना चाहिए जो SubmitJobResponse में मिला है.
पैरामीटर
-
jobId
स्ट्रिंग
रिटर्न
-
Promise<JobStatus>
getPrinterInfo()
browser.printing.getPrinterInfo(
printerId: string,
): Promise<GetPrinterInfoResponse>
यह सीडीडी फ़ॉर्मैट में प्रिंटर की स्थिति और क्षमताओं की जानकारी दिखाता है. अगर दिए गए आईडी वाला कोई प्रिंटर इंस्टॉल नहीं है, तो यह कॉल रनटाइम से जुड़ी गड़बड़ी की वजह से काम नहीं करेगा.
पैरामीटर
-
printerId
स्ट्रिंग
रिटर्न
-
Promise<GetPrinterInfoResponse>
Chrome 100+ Chrome 148 से browser.*
getPrinters()
browser.printing.getPrinters(): Promise<Printer[]>
यह डिवाइस पर उपलब्ध प्रिंटर की सूची दिखाता है. इसमें मैन्युअल तरीके से जोड़े गए, एंटरप्राइज़, और खोजे गए प्रिंटर शामिल हैं.
रिटर्न
-
Promise<Printer[]>
Chrome 100+ Chrome 148 से browser.*
submitJob()
browser.printing.submitJob(
request: SubmitJobRequest,
): Promise<SubmitJobResponse>
प्रिंट करने के लिए जॉब सबमिट करता है. अगर एक्सटेंशन को PrintingAPIExtensionsAllowlist नीति में शामिल नहीं किया गया है, तो उपयोगकर्ता को प्रिंट जॉब स्वीकार करने के लिए कहा जाता है.
Chrome 120 से पहले, यह फ़ंक्शन प्रॉमिस नहीं दिखाता था.
पैरामीटर
-
CANNOT TRANSLATE
रिटर्न
-
Promise<SubmitJobResponse>
Chrome 100+ Chrome 148 से browser.*
इवेंट
onJobStatusChanged
browser.printing.onJobStatusChanged.addListener(
callback: function,
)
जॉब का स्टेटस बदलने पर, इवेंट ट्रिगर होता है. यह सिर्फ़ इस एक्सटेंशन से बनाई गई जॉब के लिए ट्रिगर होता है.