ब्यौरा
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 के नियमों के मुताबिक है या नहीं. ध्यान दें कि कई प्रिंटर फ़्लैग किए जा सकते हैं. 
- 
    नामस्ट्रिंग प्रिंटर का नाम. 
- 
    recentlyUsedRanknumber ज़रूरी नहीं इस वैल्यू से पता चलता है कि 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
प्रॉपर्टी
- 
    jobIdstring ज़रूरी नहीं है बनाए गए प्रिंट जॉब का आईडी. यह डिवाइस पर मौजूद सभी प्रिंट जॉब के लिए यूनीक आइडेंटिफ़ायर होता है. अगर स्टेटस ठीक नहीं है, तो 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,
): Promise<void>
पहले सबमिट किए गए जॉब को रद्द करता है.
पैरामीटर
- 
    jobIdस्ट्रिंग प्रिंट जॉब का वह आईडी जिसे रद्द करना है. यह वही आईडी होना चाहिए जो SubmitJobResponseमें मिला था.
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:() => void 
रिटर्न
- 
            Promise<void> Chrome 100+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
callback?: function,
): Promise<JobStatus>
प्रिंट जॉब का स्टेटस दिखाता है. अगर दिए गए jobId वाला प्रिंट जॉब मौजूद नहीं है, तो यह कॉल रनटाइम गड़बड़ी के साथ पूरा नहीं होगा. jobId: उस प्रिंट जॉब का आईडी जिसके लिए स्टेटस की जानकारी चाहिए. यह वही आईडी होना चाहिए जो SubmitJobResponse में मिला था.
पैरामीटर
- 
    jobIdस्ट्रिंग 
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(status: JobStatus) => void - 
    स्थिति
 
- 
    
रिटर्न
- 
            Promise<JobStatus> प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
): Promise<GetPrinterInfoResponse>
यह CDD फ़ॉर्मैट में, प्रिंटर की स्थिति और उसकी सुविधाओं की जानकारी देता है. अगर दिए गए आईडी वाले कोई भी प्रिंटर इंस्टॉल नहीं किए गए हैं, तो यह कॉल रनटाइम गड़बड़ी के साथ पूरा नहीं होगा.
पैरामीटर
- 
    printerIdस्ट्रिंग 
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(response: GetPrinterInfoResponse) => void 
रिटर्न
- 
            Promise<GetPrinterInfoResponse> Chrome 100+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
getPrinters()
chrome.printing.getPrinters(
callback?: function,
): Promise<Printer[]>
यह डिवाइस पर उपलब्ध प्रिंटर की सूची दिखाता है. इसमें मैन्युअल तरीके से जोड़े गए, एंटरप्राइज़, और खोजे गए प्रिंटर शामिल हैं.
पैरामीटर
रिटर्न
- 
            Promise<Printer[]> Chrome 100+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
): Promise<SubmitJobResponse>
प्रिंट करने के लिए जॉब सबमिट करता है. अगर एक्सटेंशन को PrintingAPIExtensionsAllowlist नीति में शामिल नहीं किया गया है, तो उपयोगकर्ता को प्रिंट जॉब स्वीकार करने के लिए कहा जाता है.
Chrome 120 से पहले, यह फ़ंक्शन प्रॉमिस नहीं दिखाता था.
पैरामीटर
- 
    CANNOT TRANSLATE
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(response: SubmitJobResponse) => void - 
    जवाब
 
- 
    
रिटर्न
- 
            Promise<SubmitJobResponse> Chrome 100+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
इवेंट
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
जब काम की स्थिति बदलती है, तब यह इवेंट ट्रिगर होता है. यह इवेंट सिर्फ़ इस एक्सटेंशन से बनाई गई नौकरियों के लिए ट्रिगर होता है.