ब्यौरा
Chromebook पर इंस्टॉल किए गए प्रिंटर को प्रिंट जॉब भेजने के लिए, chrome.printing
एपीआई का इस्तेमाल करें.
अनुमतियां
printing
उपलब्धता
chrome.printing
के सभी तरीकों और इवेंट के लिए, आपको एक्सटेंशन मेनिफ़ेस्ट में "printing"
की अनुमति का एलान करना होगा. उदाहरण के लिए:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
उदाहरण
नीचे दिए गए उदाहरणों में, प्रिंटिंग नेमस्पेस में हर तरीके का इस्तेमाल करने के बारे में बताया गया है. इस कोड को एक्सटेंशन-सैंपल GitHub रेपो में मौजूद api-samples/printing से कॉपी किया गया है या यह उनके आधार पर बनाया गया है.
cancelJob()
यह उदाहरण 'cancel' को छिपाने के लिए 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
स्ट्रक्चर का रेफ़रंस शामिल है.- प्रिंट करने के लिए फ़ाइल या डेटा का एक BLOB.
submitJob()
को कॉल करने पर एक डायलॉग बॉक्स ट्रिगर होता है. इस बॉक्स में, उपयोगकर्ता से प्रिंटिंग की पुष्टि करने के लिए कहा जाता है. पुष्टि को बायपास करने के लिए, PrintingAPIExtensionsAllowlist
का इस्तेमाल करें.
यह प्रिंटिंग उदाहरण का आसान वर्शन है. ध्यान दें कि ticket
, SubmitJobRequest
स्ट्रक्चर (लाइन 8) से जुड़ा है और प्रिंट किया जाने वाला डेटा एक BLOB (लाइन 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"
प्रिंट जॉब भेजा गया.
"FAILED"
किसी गड़बड़ी की वजह से प्रिंट जॉब रुक गया.
"रद्द किया गया"
प्रिंट जॉब को उपयोगकर्ता ने या एपीआई के ज़रिए रद्द किया था.
"प्रिंट किया गया"
प्रिंट जॉब बिना किसी गड़बड़ी के प्रिंट किया गया.
Printer
प्रॉपर्टी
-
ब्यौरा
स्ट्रिंग
प्रिंटर के बारे में ऐसी जानकारी जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है.
-
आईडी
स्ट्रिंग
प्रिंटर का आइडेंटिफ़ायर; इस बात की गारंटी है कि वह डिवाइस पर मौजूद अलग-अलग प्रिंटर के बीच यूनीक होगा.
-
isDefault
बूलियन
वह फ़्लैग जो दिखाता है कि प्रिंटर DefaultPrinterSelection नियमों को पूरा करता है या नहीं. ध्यान दें कि कई प्रिंटर फ़्लैग किए जा सकते हैं.
-
नाम
स्ट्रिंग
प्रिंटर का नाम.
-
recentlyUsedRank
नंबर वैकल्पिक
इस वैल्यू से पता चलता है कि 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"
प्रिंटर बंद हो गया है और प्रिंट नहीं होता है, लेकिन फिर भी प्रिंट जॉब स्वीकार करता है.
"नहीं पहुंच योग्य"
प्रिंटर तक पहुंचा नहीं जा सकता और वह प्रिंट जॉब स्वीकार नहीं करता.
"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
रिटर्न
-
प्रॉमिस<void>
Chrome 100 और उसके बाद के वर्शनमेनिफ़ेस्ट V3 और उसके बाद के वर्शन में प्रॉमिस काम करते हैं. हालांकि, कॉलबैक की सुविधा इन मामलों में दी जाती है पुराने सिस्टम के साथ काम करने की सुविधा. एक ही फ़ंक्शन कॉल में दोनों का इस्तेमाल नहीं किया जा सकता. कॉन्टेंट बनाने प्रॉमिस उसी टाइप के साथ ठीक होता है जिसे कॉलबैक में पास किया जाता है.
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
)
CDD फ़ॉर्मैट में, प्रिंटर की स्थिति और उसकी क्षमताओं की जानकारी देता है. अगर दिए गए आईडी वाला कोई प्रिंटर इंस्टॉल नहीं किया गया है, तो रनटाइम की गड़बड़ी की वजह से यह कॉल नहीं हो पाएगा.
पैरामीटर
-
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,
)
जॉब की स्थिति बदलने पर इवेंट ट्रिगर होता है. यह सिर्फ़ इस एक्सटेंशन से बनाई गई जॉब के लिए ट्रिगर होता है.