chrome.printing

ब्यौरा

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

अनुमतियां

printing

उपलब्धता

Chrome 81 और इसके बाद के वर्शन सिर्फ़ ChromeOS पर

मेनिफ़ेस्ट

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

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

उदाहरण

नीचे दिए गए उदाहरणों में, प्रिंटिंग नेमस्पेस के हर तरीके का इस्तेमाल करने के बारे में बताया गया है. इस कोड को एक्सटेंशन-सैंपल GitHub रेपो में मौजूद api-samples/printing से या उसके आधार पर कॉपी किया जाता है.

रद्द करें जॉब()

इस उदाहरण में, jobStatus के PENDING या IN_PROGRESS न होने पर, 'रद्द करें' बटन को छिपाने के लिए onJobStatusChanged हैंडलर का इस्तेमाल किया गया है. ध्यान दें कि कुछ नेटवर्क पर या जब कोई 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() वाले तरीके के लिए तीन चीज़ों की ज़रूरत होती है.

  • 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

प्रॉपर्टी

  • capabilities

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

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

  • स्थिति

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

JobStatus

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

Enum

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

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

"फ़ेल"
किसी गड़बड़ी की वजह से प्रिंट जॉब में रुकावट आई.

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

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

Printer

प्रॉपर्टी

  • ब्यौरा

    स्ट्रिंग

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

  • id

    स्ट्रिंग

    प्रिंटर का आइडेंटिफ़ायर; डिवाइस के प्रिंटर से अलग होने की गारंटी है.

  • isDefault

    boolean

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

  • नाम

    स्ट्रिंग

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

  • recentlyUsedRank

    नंबर ज़रूरी नहीं

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

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

"पहुंच से बाहर है"
प्रिंटर पहुंच से बाहर है और यह प्रिंट जॉब स्वीकार नहीं करता.

"EXPIRED_CERTIFICATE"
एसएसएल सर्टिफ़िकेट की समयसीमा खत्म हो गई है. प्रिंटर जॉब स्वीकार करता है, लेकिन वह फ़ेल हो जाता है.

"Available"
प्रिंटर उपलब्ध है.

SubmitJobRequest

प्रॉपर्टी

  • नौकरी

    सबमिट किया जाने वाला प्रिंट जॉब. सिर्फ़ "ऐप्लिकेशन/pdf" कॉन्टेंट का इस्तेमाल किया जा सकता है. क्लाउड जॉब टिकट में FitToPageTicketItem, PageRangeTicketItem, ReverseOrderTicketItem, और VendorTicketItem फ़ील्ड शामिल नहीं होने चाहिए, क्योंकि ये नेटिव प्रिंटिंग के लिए काम के नहीं हैं. बाकी सभी फ़ील्ड मौजूद होने चाहिए.

SubmitJobResponse

प्रॉपर्टी

  • 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 और इसके बाद के वर्शन

    प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.

getPrinterInfo()

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

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

पैरामीटर

  • printerId

    स्ट्रिंग

  • कॉलबैक

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

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

    (response: GetPrinterInfoResponse)=>void

रिटर्न

  • Chrome 100 और इसके बाद के वर्शन

    प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.

getPrinters()

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

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

पैरामीटर

  • कॉलबैक

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

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

    (printers: Printer[])=>void

रिटर्न

  • वादा<प्रिंटर[]>

    Chrome 100 और इसके बाद के वर्शन

    प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.

submitJob()

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

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

पैरामीटर

रिटर्न

  • Chrome 100 और इसके बाद के वर्शन

    प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.

इवेंट

onJobStatusChanged

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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

    • jobId

      स्ट्रिंग

    • स्थिति