chrome.printing

ब्यौरा

Chromebook पर इंस्टॉल किए गए प्रिंटर पर प्रिंट जॉब भेजने के लिए, chrome.printing API का इस्तेमाल करें.

अनुमतियां

printing

उपलब्धता

Chrome 81 और उसके बाद के वर्शन सिर्फ़ ChromeOS के लिए

सभी chrome.printing मेथड और इवेंट के लिए, आपको एक्सटेंशन मेनिफ़ेस्ट में "printing" अनुमति का एलान करना होगा. उदाहरण के लिए:

{
  "name": "My extension",
  ...
  "permissions": [
    "printing"
  ],
  ...
}

उदाहरण

नीचे दिए गए उदाहरणों में, प्रिंटिंग नेमस्पेस में हर तरीके का इस्तेमाल करके प्रिंट करने का तरीका बताया गया है. यह कोड, एक्सटेंशन-सैंपल 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) में बदल दिया गया है. सैंपल में प्रिंटर का आईडी (लाइन 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

प्रॉपर्टी

  • सुविधाएं

    ऑब्जेक्ट ज़रूरी नहीं है

    सीडीडी फ़ॉर्मैट में प्रिंटर की सुविधाएं. ऐसा हो सकता है कि प्रॉपर्टी मौजूद न हो.

  • स्थिति

    प्रिंटर की स्थिति.

JobStatus

प्रिंट जॉब की स्थिति.

Enum

"मंज़ूरी बाकी है"
Chrome पर प्रिंट जॉब मिल गया है, लेकिन उसे अभी तक प्रोसेस नहीं किया गया है.

"IN_PROGRESS"
प्रिंट जॉब को प्रिंट करने के लिए भेजा गया है.

"प्रोसेस पूरी नहीं हुई"
किसी गड़बड़ी की वजह से प्रिंट जॉब बीच में रुक गया.

"रद्द किया गया"
उपयोगकर्ता ने या एपीआई की मदद से प्रिंट जॉब रद्द किया था.

"PRINTED"
प्रिंट जॉब बिना किसी गड़बड़ी के प्रिंट हो गया.

Printer

प्रॉपर्टी

  • ब्यौरा

    स्ट्रिंग

    प्रिंटर के बारे में ऐसी जानकारी जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है.

  • आईडी

    स्ट्रिंग

    प्रिंटर का आइडेंटिफ़ायर. यह पक्का है कि डिवाइस पर मौजूद प्रिंटर में से यह आइडेंटिफ़ायर यूनीक होगा.

  • isDefault

    बूलियन

    यह फ़्लैग दिखाता है कि प्रिंटर, DefaultPrinterSelection के नियमों के मुताबिक है या नहीं. ध्यान दें कि कई प्रिंटर फ़्लैग किए जा सकते हैं.

  • नाम

    स्ट्रिंग

    प्रिंटर का नाम.

  • recentlyUsedRank

    number ज़रूरी नहीं

    इस वैल्यू से पता चलता है कि 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"
कोई सामान्य समस्या. प्रिंटर अब भी प्रिंट जॉब स्वीकार करता है.

"बंद है"
प्रिंटर बंद है और वह प्रिंट नहीं करता. हालांकि, वह अब भी प्रिंट जॉब स्वीकार करता है.

"UNREACHABLE"
प्रिंटर कनेक्ट नहीं हो पा रहा है और प्रिंट जॉब स्वीकार नहीं कर रहा है.

"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

रिटर्न

  • Promise<void>

    Chrome 100+

    मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

getJobStatus()

वादा करना मंज़ूरी बाकी है
chrome.printing.getJobStatus(
  jobId: string,
  callback?: function,
)

प्रिंट जॉब का स्टेटस दिखाता है. अगर दिए गए jobId वाले प्रिंट जॉब का अस्तित्व नहीं है, तो यह कॉल रनटाइम गड़बड़ी के साथ पूरा नहीं होगा. jobId: प्रिंट जॉब का आईडी, जिसका स्टेटस दिखाना है. यह वही आईडी होना चाहिए जो आपको SubmitJobResponse में मिला था.

पैरामीटर

  • jobId

    स्ट्रिंग

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (status: JobStatus) => void

रिटर्न

  • Promise<JobStatus>

    मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

getPrinterInfo()

वादा करना
chrome.printing.getPrinterInfo(
  printerId: string,
  callback?: function,
)

सीडीडी फ़ॉर्मैट में, प्रिंटर की स्थिति और सुविधाओं की जानकारी दिखाता है. अगर दिए गए आईडी वाले कोई प्रिंटर इंस्टॉल नहीं है, तो यह कॉल रनटाइम की गड़बड़ी के साथ फ़ेल हो जाएगा.

पैरामीटर

  • printerId

    स्ट्रिंग

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (response: GetPrinterInfoResponse) => void

रिटर्न

  • Chrome 100+

    मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

getPrinters()

वादा करना
chrome.printing.getPrinters(
  callback?: function,
)

डिवाइस पर उपलब्ध प्रिंटर की सूची दिखाता है. इसमें मैन्युअल तरीके से जोड़े गए, एंटरप्राइज़, और अपने-आप जुड़े प्रिंटर शामिल हैं.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (printers: Printer[]) => void

रिटर्न

  • Promise<Printer[]>

    Chrome 100+

    मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

submitJob()

वादा करना
chrome.printing.submitJob(
  request: SubmitJobRequest,
  callback?: function,
)

प्रिंट करने के लिए जॉब सबमिट करता है. अगर एक्सटेंशन, PrintingAPIExtensionsAllowlist नीति में शामिल नहीं है, तो उपयोगकर्ता को प्रिंट जॉब स्वीकार करने के लिए कहा जाता है. Chrome 120 से पहले, यह फ़ंक्शन कोई प्रॉमिस नहीं दिखाता था.

पैरामीटर

  • CANNOT TRANSLATE
  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (response: SubmitJobResponse) => void

रिटर्न

  • Chrome 100+

    मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

इवेंट

onJobStatusChanged

chrome.printing.onJobStatusChanged.addListener(
  callback: function,
)

जब जॉब की स्थिति बदलती है, तब यह इवेंट ट्रिगर होता है. यह सिर्फ़ इस एक्सटेंशन से बनाई गई नौकरियों के लिए ट्रिगर होता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

    callback पैरामीटर इस तरह दिखता है:

    (jobId: string, status: JobStatus) => void

    • jobId

      स्ट्रिंग

    • स्थिति