chrome.printing

refresh date: 2026-09-25 robots: noindex

ब्यौरा

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

अनुमतियां

printing

उपलब्धता

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

मेनिफ़ेस्ट

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

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

उदाहरण

नीचे दिए गए उदाहरणों में, प्रिंटिंग नेमस्पेस में हर तरीके का इस्तेमाल करने का तरीका दिखाया गया है. यह कोड, extensions-samples GitHub रिपॉज़िटरी में मौजूद 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

प्रॉपर्टी

  • सुविधाएं

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

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

  • स्थिति

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

JobStatus

प्रिंट जॉब का स्टेटस.

Enum

"PENDING"
प्रिंट जॉब Chrome को मिल गया है, लेकिन अब तक इस पर कार्रवाई नहीं की गई है.

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

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

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

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

Printer

प्रॉपर्टी

  • ब्यौरा

    स्ट्रिंग

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

  • id

    स्ट्रिंग

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

  • isDefault

    बूलियन

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

  • नाम

    स्ट्रिंग

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

  • recentlyUsedRank

    number optional

    इस वैल्यू से पता चलता है कि Chrome से प्रिंट करने के लिए, प्रिंटर का इस्तेमाल कब किया गया था. वैल्यू जितनी कम होगी, प्रिंटर का इस्तेमाल उतनी ही हाल ही में किया गया होगा. कम से कम वैल्यू 0 होनी चाहिए. वैल्यू मौजूद न होने का मतलब है कि हाल ही में प्रिंटर का इस्तेमाल नहीं किया गया था. यह वैल्यू, प्रिंटर के हिसाब से यूनीक होती है.

  • सोर्स

    प्रिंटर का सोर्स (उपयोगकर्ता या कॉन्फ़िगर की गई नीति).

  • यूआरआई

    स्ट्रिंग

    प्रिंटर का यूआरआई. एक्सटेंशन इसका इस्तेमाल, उपयोगकर्ता के लिए प्रिंटर चुनने के लिए कर सकते हैं.

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 ज़रूरी नहीं है

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

  • स्थिति

    अनुरोध की स्थिति.

SubmitJobStatus

submitJob अनुरोध का स्टेटस.

Enum

"ठीक है"
प्रिंट जॉब अनुरोध स्वीकार कर लिया गया है.

"USER_REJECTED"
प्रिंट जॉब के लिए भेजे गए अनुरोध को उपयोगकर्ता ने अस्वीकार कर दिया है.

प्रॉपर्टी

MAX_GET_PRINTER_INFO_CALLS_PER_MINUTE

हर मिनट में getPrinterInfo को ज़्यादा से ज़्यादा कितनी बार कॉल किया जा सकता है.

वैल्यू

20

MAX_SUBMIT_JOB_CALLS_PER_MINUTE

हर मिनट में submitJob को ज़्यादा से ज़्यादा कितनी बार कॉल किया जा सकता है.

वैल्यू

40

तरीके

cancelJob()

Promise
chrome.printing.cancelJob(
  jobId: string,
  callback?: function,
)
: Promise<void>

पहले सबमिट किए गए काम को रद्द करता है.

पैरामीटर

  • jobId

    स्ट्रिंग

    प्रिंट जॉब का वह आईडी जिसे रद्द करना है. यह वही आईडी होना चाहिए जो SubmitJobResponse में मिला है.

  • कॉलबैक

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

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

    () => void

रिटर्न

  • Promise<void>

    Chrome 100+

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.

getJobStatus()

Promise Chrome 135 और इसके बाद के वर्शन
chrome.printing.getJobStatus(
  jobId: string,
  callback?: function,
)
: Promise<JobStatus>

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

पैरामीटर

  • jobId

    स्ट्रिंग

  • कॉलबैक

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

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

    (status: JobStatus) => void

रिटर्न

  • Promise<JobStatus>

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.

getPrinterInfo()

Promise
chrome.printing.getPrinterInfo(
  printerId: string,
  callback?: function,
)
: Promise<GetPrinterInfoResponse>

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

पैरामीटर

  • printerId

    स्ट्रिंग

  • कॉलबैक

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

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

    (response: GetPrinterInfoResponse) => void

रिटर्न

  • Chrome 100+

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.

getPrinters()

Promise
chrome.printing.getPrinters(
  callback?: function,
)
: Promise<Printer[]>

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

पैरामीटर

  • कॉलबैक

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

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

    (printers: Printer[]) => void

रिटर्न

  • Promise<Printer[]>

    Chrome 100+

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.

submitJob()

Promise
chrome.printing.submitJob(
  request: SubmitJobRequest,
  callback?: function,
)
: Promise<SubmitJobResponse>

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

पैरामीटर

  • CANNOT TRANSLATE
  • कॉलबैक

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

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

    (response: SubmitJobResponse) => void

रिटर्न

  • Chrome 100+

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.

इवेंट

onJobStatusChanged

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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

    • jobId

      स्ट्रिंग

    • स्थिति