browser.documentScan

ब्यौरा

अटैच किए गए दस्तावेज़ स्कैन करने वाले ऐप्लिकेशन से इमेज ढूंढने और उन्हें वापस पाने के लिए, chrome.documentScan एपीआई का इस्तेमाल करें.

Document Scan API को इस तरह डिज़ाइन किया गया है कि ऐप्लिकेशन और एक्सटेंशन, अटैच किए गए दस्तावेज़ स्कैनर पर पेपर दस्तावेज़ों का कॉन्टेंट देख सकें.

अनुमतियां

documentScan

उपलब्धता

Chrome 44+ Chrome 148 से browser.* सिर्फ़ ChromeOS के लिए
एपीआई के ज़रिए बाद में जोड़े गए सदस्यों की उपलब्धता की जानकारी, उन सदस्यों के साथ दिखाई जाती है.

कॉन्सेप्ट और इस्तेमाल

इस एपीआई की मदद से, दस्तावेज़ों को दो तरीकों से स्कैन किया जा सकता है. अगर आपका इस्तेमाल का उदाहरण किसी भी स्कैनर के साथ काम कर सकता है और उसे कॉन्फ़िगरेशन को कंट्रोल करने की ज़रूरत नहीं है, तो scan() तरीके का इस्तेमाल करें. इस्तेमाल के ज़्यादा जटिल उदाहरणों के लिए, कई तरीकों को एक साथ इस्तेमाल करना पड़ता है. ये तरीके, Chrome 124 और इसके बाद के वर्शन में ही काम करते हैं.

आसान स्कैनिंग

इस्तेमाल के आसान मामलों के लिए, यानी कि ऐसे मामले जो किसी भी स्कैनर के साथ काम कर सकते हैं और जिनके लिए कॉन्फ़िगरेशन को कंट्रोल करने की ज़रूरत नहीं होती, scan() को कॉल करें. यह तरीका, ScanOptions ऑब्जेक्ट लेता है और एक प्रॉमिस दिखाता है, जो ScanResults ऑब्जेक्ट के साथ रिज़ॉल्व होता है. इस विकल्प की क्षमताएं, स्कैन की संख्या और एमआईएमई टाइप तक सीमित हैं. इन्हें कॉलर स्वीकार करेगा. स्कैन किए गए दस्तावेज़, यूआरएल के तौर पर दिखाए जाते हैं. इन्हें यूज़र इंटरफ़ेस के लिए, <img> टैग में दिखाया जाता है.

कॉम्प्लेक्स स्कैनिंग

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

डिस्कवरी

  1. getScannerList() पर कॉल करें. उपलब्ध स्कैनर, Promise में दिखाए जाते हैं. यह Promise, GetScannerListResponse के साथ रिज़ॉल्व होता है.

    • रिस्पॉन्स ऑब्जेक्ट में, ScannerInfo ऑब्जेक्ट का एक कलेक्शन होता है.
    • अगर कोई स्कैनर कई प्रोटोकॉल या कनेक्शन के तरीकों के साथ काम करता है, तो कलेक्शन में उस स्कैनर के लिए कई एंट्री हो सकती हैं.
  2. दिखाए गए कलेक्शन से कोई स्कैनर चुनें और उसकी scannerId प्रॉपर्टी की वैल्यू सेव करें.

    एक ही स्कैनर के लिए कई ऑब्जेक्ट के बीच अंतर करने के लिए, अलग-अलग ScannerInfo ऑब्जेक्ट की प्रॉपर्टी का इस्तेमाल करें. एक ही स्कैनर से स्कैन किए गए ऑब्जेक्ट के लिए, deviceUuid प्रॉपर्टी की वैल्यू एक जैसी होगी. ScannerInfo में एक imageFormats प्रॉपर्टी भी होती है. इसमें, इस्तेमाल की जा सकने वाली इमेज टाइप का कलेक्शन होता है.

स्कैनर का कॉन्फ़िगरेशन

  1. सेव किए गए स्कैनर आईडी को पास करते हुए, openScanner() को कॉल करें. यह एक प्रॉमिस दिखाता है, जो OpenScannerResponse के साथ रिज़ॉल्व होता है. रिस्पॉन्स ऑब्जेक्ट में ये शामिल होते हैं:

    • scannerHandle प्रॉपर्टी, जिसे आपको सेव करना होगा.

    • एक विकल्प प्रॉपर्टी, जिसमें स्कैनर से जुड़ी प्रॉपर्टी शामिल होती हैं. आपको इन्हें सेट करना होगा. ज़्यादा जानकारी के लिए, स्कैनर के विकल्प वापस पाना लेख पढ़ें.

  2. (ज़रूरी नहीं) अगर आपको स्कैनर के विकल्पों के लिए, उपयोगकर्ता से वैल्यू चाहिए, तो एक यूज़र इंटरफ़ेस बनाएं. आपको पिछले चरण में दिए गए स्कैनर के विकल्पों की ज़रूरत होगी. साथ ही, आपको स्कैनर से मिले विकल्प ग्रुप को वापस लाना होगा. ज़्यादा जानकारी के लिए, यूज़र इंटरफ़ेस बनाना लेख पढ़ें.

  3. प्रोग्राम के हिसाब से या उपयोगकर्ता से मिली वैल्यू का इस्तेमाल करके, OptionSetting ऑब्जेक्ट का कलेक्शन बनाएं. ज़्यादा जानकारी के लिए, स्कैनर के विकल्प सेट करना लेख पढ़ें.

  4. स्कैनर के लिए विकल्प सेट करने के लिए, OptionSetting ऑब्जेक्ट के कलेक्शन को setOptions() में पास करें. यह एक प्रॉमिस दिखाता है, जो SetOptionsResponse के साथ रिज़ॉल्व होता है. इस ऑब्जेक्ट में, स्कैनर के कॉन्फ़िगरेशन के पहले चरण में मिले स्कैनर के विकल्पों का अपडेट किया गया वर्शन शामिल होता है.

    एक विकल्प बदलने से, दूसरे विकल्प की पाबंदियों में बदलाव हो सकता है. इसलिए, आपको ये चरण कई बार दोहराने पड़ सकते हैं.

स्कैन किया जा रहा है

  1. StartScanOptions ऑब्जेक्ट बनाएं और उसे startScan() को पास करें. यह एक प्रॉमिस दिखाता है, जो StartScanResponse के साथ रिज़ॉल्व होता है. इसकी job प्रॉपर्टी एक हैंडल है. इसका इस्तेमाल, स्कैन किए गए डेटा को पढ़ने या स्कैन को रद्द करने के लिए किया जाएगा.

  2. जॉब हैंडल को readScanData() पर पास करें. यह एक प्रॉमिस दिखाता है, जो ReadScanDataResponse ऑब्जेक्ट के साथ रिज़ॉल्व होता है. अगर डेटा को सही तरीके से पढ़ा गया है, तो इसकी result प्रॉपर्टी SUCCESS के बराबर होगी और इसकी data प्रॉपर्टी में स्कैन के हिस्से के साथ ArrayBuffer शामिल होगा. ध्यान दें कि estimatedCompletion में अब तक डिलीवर किए गए कुल डेटा का अनुमानित प्रतिशत शामिल है.

  3. पिछले चरण को तब तक दोहराएं, जब तक result प्रॉपर्टी की वैल्यू EOF के बराबर न हो जाए या कोई गड़बड़ी न हो जाए.

स्कैन खत्म होने पर, तीसरे चरण में सेव किए गए स्कैनर हैंडल के साथ closeScanner() को कॉल करें. यह एक प्रॉमिस दिखाता है, जो CloseScannerResponse के साथ रिज़ॉल्व होता है. जॉब बनाने के बाद, किसी भी समय cancelScan() को कॉल करने पर, स्कैनिंग की प्रोसेस खत्म हो जाएगी.

जवाब के ऑब्जेक्ट

सभी तरीके, एक प्रॉमिस दिखाते हैं जो किसी तरह के रिस्पॉन्स ऑब्जेक्ट के साथ रिज़ॉल्व होता है. इनमें से ज़्यादातर में result प्रॉपर्टी होती है. इसकी वैल्यू, OperationResult का सदस्य होती है. रिस्पॉन्स ऑब्जेक्ट की कुछ प्रॉपर्टी में तब तक वैल्यू नहीं होंगी, जब तक result की वैल्यू कोई खास वैल्यू न हो. इन संबंधों के बारे में, हर रिस्पॉन्स ऑब्जेक्ट के रेफ़रंस में बताया गया है.

उदाहरण के लिए, OpenScannerResponse.scannerHandle की वैल्यू सिर्फ़ तब होगी, जब OpenScannerResponse.result की वैल्यू SUCCESS के बराबर होगी.

स्कैनर के विकल्प

डिवाइस के हिसाब से, स्कैनर के विकल्प काफ़ी अलग-अलग होते हैं. इसलिए, documentScan API में स्कैनर के विकल्पों को सीधे तौर पर नहीं दिखाया जा सकता. इस समस्या को हल करने के लिए, OpenScannerResponse (openScanner() का इस्तेमाल करके वापस लाया गया) और SetOptionsResponse (setOptions() के लिए रिस्पॉन्स ऑब्जेक्ट) में एक options प्रॉपर्टी होती है. यह एक ऐसा ऑब्जेक्ट है जिसमें स्कैनर के हिसाब से विकल्प होते हैं. हर विकल्प एक की-वैल्यू मैपिंग है, जहां कुंजी डिवाइस के हिसाब से तय किया गया विकल्प है और वैल्यू ScannerOption का इंस्टेंस है.

आम तौर पर, स्ट्रक्चर ऐसा दिखता है:

{
  "key1": { scannerOptionInstance }
  "key2": { scannerOptionInstance }
}

उदाहरण के लिए, मान लें कि कोई स्कैनर "सोर्स" और "रिज़ॉल्यूशन" नाम के विकल्प दिखाता है. दिखाए गए options ऑब्जेक्ट का स्ट्रक्चर, यहां दिए गए उदाहरण की तरह दिखेगा. आसानी से समझने के लिए, सिर्फ़ अधूरे ScannerOption जवाब दिखाए गए हैं.

{
  "source": {
    "name": "source",
    "type": OptionType.STRING,
...
},
  "resolution": {
    "name": "resolution",
    "type": OptionType.INT,
...
  },
...
}

यूज़र इंटरफ़ेस बनाना

इस एपीआई का इस्तेमाल करने के लिए, यह ज़रूरी नहीं है कि उपयोगकर्ता किसी खास विकल्प के लिए वैल्यू चुने. हालांकि, ऐसा किया जा सकता है. इसके लिए, यूज़र इंटरफ़ेस की ज़रूरत होती है. अटैच किए गए स्कैनर के विकल्प पाने के लिए, OpenScannerResponse (openScanner() ने खोला है) का इस्तेमाल करें. इसके बारे में पिछले सेक्शन में बताया गया है.

कुछ स्कैनर, डिवाइस के हिसाब से विकल्पों को ग्रुप में बांटते हैं. इनसे विकल्प के व्यवहार पर कोई असर नहीं पड़ता. हालांकि, इन ग्रुप के बारे में स्कैनर के प्रॉडक्ट दस्तावेज़ में बताया जा सकता है. इसलिए, ऐसे ग्रुप उपयोगकर्ता को दिखाए जाने चाहिए. getOptionGroups() को कॉल करके, इन ग्रुप को वापस पाया जा सकता है. यह एक प्रॉमिस दिखाता है, जो GetOptionGroupsResponse ऑब्जेक्ट के साथ रिज़ॉल्व होता है. इसकी groups प्रॉपर्टी में, स्कैनर के हिसाब से ग्रुप का कलेक्शन होता है. इन ग्रुप में मौजूद जानकारी का इस्तेमाल करके, OpenScannerResponse में मौजूद विकल्पों को व्यवस्थित करें, ताकि उन्हें दिखाया जा सके.

{
  scannerHandle: "123456",
  result: SUCCESS,
  groups: [
    {
      title: "Standard",
      members: [ "resolution", "mode", "source" ]
    }
  ]
}

जैसा कि स्कैनर कॉन्फ़िगरेशन में बताया गया है, एक विकल्प बदलने से दूसरे विकल्प की पाबंदियों में बदलाव हो सकता है. इसलिए, setOptionsResponse (setOptions() के लिए रिस्पॉन्स ऑब्जेक्ट) में एक और options प्रॉपर्टी शामिल होती है. यूज़र इंटरफ़ेस को अपडेट करने के लिए, इसका इस्तेमाल करें. इसके बाद, ज़रूरत के हिसाब से तब तक दोहराएं, जब तक सभी विकल्प सेट न हो जाएं.

स्कैनर के विकल्प सेट करना

setOptions() में OptionSetting ऑब्जेक्ट का कलेक्शन पास करके, स्कैनर के विकल्प सेट करें. उदाहरण के लिए, लेटर साइज़ का एक पेज स्कैन करना सेक्शन देखें.

उदाहरण

किसी पेज को ब्लॉब के तौर पर वापस पाना

इस उदाहरण में, स्कैनर से किसी पेज को ब्लॉब के तौर पर वापस पाने का एक तरीका दिखाया गया है. साथ ही, OperationResult की वैल्यू का इस्तेमाल करके, startScan() और readScanData() के इस्तेमाल को दिखाया गया है.

async function pageAsBlob(handle) {
  let response = await browser.documentScan.startScan(
      handle, {format: "image/jpeg"});
  if (response.result != browser.documentScan.OperationResult.SUCCESS) {
    return null;
  }
  const job = response.job;

  let imgParts = [];
  response = await browser.documentScan.readScanData(job);
  while (response.result == browser.documentScan.OperationResult.SUCCESS) {
    if (response.data && response.data.byteLength > 0) {
        imgParts.push(response.data);
    } else {
      // Delay so hardware can make progress.
      await new Promise(r => setTimeout(r, 100));
    }
    response = await browser.documentScan.readScanData(job);
  }
  if (response.result != browser.documentScan.OperationResult.EOF) {
    return null;
  }
  if (response.data && response.data.byteLength > 0) {
    imgParts.push(response.data);
  }
  return new Blob(imgParts, { type: "image/jpeg" });
}

लेटर साइज़ का एक पेज स्कैन करना

इस उदाहरण में, स्कैनर चुनने, उसके विकल्प सेट करने, और उसे खोलने का तरीका बताया गया है. इसके बाद, यह एक पेज का कॉन्टेंट हासिल करता है और स्कैनर को बंद कर देता है. इस प्रोसेस में, getScannerList(), openScanner(), setOptions(), और closeScanner() का इस्तेमाल करने का तरीका बताया गया है. ध्यान दें कि पेज का कॉन्टेंट, पिछले उदाहरण में दिए गए pageAsBlob() फ़ंक्शन को कॉल करके वापस लाया जाता है.

async function scan() {
    let response = await browser.documentScan.getScannerList({ secure: true });
    let scanner = await browser.documentScan.openScanner(
        response.scanners[0].scannerId);
    const handle = scanner.scannerHandle;

    let options = [];
    for (source of scanner.options["source"].constraint.list) {
        if (source.includes("ADF")) {
            options.push({
                name: "source",
                type: browser.documentScan.OptionType.STRING,
                value: { value: source }
            });
            break;
        }
    }
    options.push({
        name: "tl-x",
        type: browser.documentScan.OptionType.FIXED,
        value: 0.0
    });
    options.push({
        name: "br-x",
        type: browser.documentScan.OptionType.FIXED,
        value: 215.9  // 8.5" in mm
    });
    options.push({
        name: "tl-y",
        type: browser.documentScan.OptionType.FIXED,
        value: 0.0
    });
    options.push({
        name: "br-y",
        type: browser.documentScan.OptionType.FIXED,
        value: 279.4  // 11" in mm
    });
    response = await browser.documentScan.setOptions(handle, options);

    let imgBlob = await pageAsBlob(handle);
    if (imgBlob != null) {
        // Insert imgBlob into DOM, save to disk, etc
    }
    await browser.documentScan.closeScanner(handle);
}

कॉन्फ़िगरेशन दिखाएं

जैसा कि पहले बताया गया है, किसी उपयोगकर्ता को स्कैनर के कॉन्फ़िगरेशन के विकल्प दिखाने के लिए, getOptionGroups() को कॉल करना ज़रूरी है. इसके अलावा, openScanner() को कॉल करने पर मिलने वाले स्कैनर के विकल्पों को भी कॉल करना ज़रूरी है. ऐसा इसलिए है, ताकि मैन्युफ़ैक्चरर के तय किए गए ग्रुप में मौजूद उपयोगकर्ताओं को विकल्प दिखाए जा सकें. इस उदाहरण में, ऐसा करने का तरीका बताया गया है.

async function showConfig() {
  let response = await browser.documentScan.getScannerList({ secure: true });
  let scanner = await browser.documentScan.openScanner(
      response.scanners[0].scannerId);
  let groups = await browser.documentScan.getOptionGroups(scanner.scannerHandle);

  for (const group of groups.groups) {
    console.log("=== " + group.title + " ===");
    for (const member of group.members) {
      const option = scanner.options[member];
      if (option.isActive) {
        console.log("  " + option.name + " = " + option.value);
      } else {
        console.log("  " + option.name + " is inactive");
      }
    }
  }
}

टाइप

CancelScanResponse

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • काम

    स्ट्रिंग

    यह वही जॉब हैंडल उपलब्ध कराता है जो cancelScan() को पास किया गया था.

  • नतीजा

    बैकएंड का स्कैन रद्द करने का नतीजा. अगर नतीजा OperationResult.SUCCESS या OperationResult.CANCELLED है, तो इसका मतलब है कि स्कैन रद्द कर दिया गया है और स्कैनर नया स्कैन शुरू करने के लिए तैयार है. अगर नतीजा OperationResult.DEVICE_BUSY है, तो इसका मतलब है कि स्कैनर अब भी रद्द करने के अनुरोध को प्रोसेस कर रहा है. कॉलर को कुछ देर इंतज़ार करना चाहिए और फिर से अनुरोध करना चाहिए. नतीजे की अन्य वैल्यू से, ऐसी गड़बड़ी का पता चलता है जिसे ठीक नहीं किया जा सकता. इसलिए, फिर से कोशिश न करें.

CloseScannerResponse

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • नतीजा

    स्कैनर बंद करने का नतीजा. अगर यह वैल्यू SUCCESS नहीं है, तो भी हैंडल अमान्य होगा. साथ ही, इसका इस्तेमाल आगे की किसी भी कार्रवाई के लिए नहीं किया जाना चाहिए.

  • scannerHandle

    स्ट्रिंग

    वही स्कैनर हैंडल जो closeScanner को पास किया गया था.

Configurability

Chrome 125+ browser.* Chrome 148 से

किसी विकल्प को बदलने का तरीका.

Enum

"NOT_CONFIGURABLE"
यह विकल्प रीड-ओनली है.

"SOFTWARE_CONFIGURABLE"
इस विकल्प को सॉफ़्टवेयर में सेट किया जा सकता है.

"HARDWARE_CONFIGURABLE"
उपयोगकर्ता, स्कैनर पर मौजूद बटन को टॉगल करके या दबाकर, इस विकल्प को सेट कर सकता है.

ConnectionType

Chrome 125+ browser.* Chrome 148 से

इससे पता चलता है कि स्कैनर, कंप्यूटर से कैसे कनेक्ट है.

Enum

"UNSPECIFIED"

"यूएसबी"

"NETWORK"

ConstraintType

Chrome 125+ browser.* Chrome 148 से

OptionConstraint से दिखाए गए कंस्ट्रेंट का डेटा टाइप.

Enum

"INT_RANGE"
OptionType.INT वैल्यू की रेंज पर पाबंदी. OptionConstraint की min, max, और quant प्रॉपर्टी long होंगी. साथ ही, इसकी list प्रॉपर्टी को अनसेट कर दिया जाएगा.

"FIXED_RANGE"
OptionType.FIXED वैल्यू की रेंज पर पाबंदी. OptionConstraint की min, max, और quant प्रॉपर्टी double पर सेट हो जाएंगी. साथ ही, इसकी list प्रॉपर्टी को अनसेट कर दिया जाएगा.

"INT_LIST"
OptionType.INT वैल्यू की किसी खास सूची पर पाबंदी. OptionConstraint.list प्रॉपर्टी में long वैल्यू होंगी और अन्य प्रॉपर्टी अनसेट हो जाएंगी.

"FIXED_LIST"
OptionType.FIXED वैल्यू की किसी खास सूची पर पाबंदी. OptionConstraint.list प्रॉपर्टी में double वैल्यू होंगी और अन्य प्रॉपर्टी अनसेट हो जाएंगी.

"STRING_LIST"
OptionType.STRING वैल्यू की किसी खास सूची पर पाबंदी. OptionConstraint.list प्रॉपर्टी में DOMString वैल्यू होंगी और अन्य प्रॉपर्टी अनसेट हो जाएंगी.

DeviceFilter

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • स्थानीय

    बूलियन ज़रूरी नहीं

    सिर्फ़ उन स्कैनर को दिखाएं जो सीधे तौर पर कंप्यूटर से जुड़े हैं.

  • सुरक्षित

    बूलियन ज़रूरी नहीं

    सिर्फ़ ऐसे स्कैनर दिखाएं जो यूएसबी या टीएलएस जैसे सुरक्षित ट्रांसपोर्ट का इस्तेमाल करते हैं.

GetOptionGroupsResponse

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • समूह

    OptionGroup[] ज़रूरी नहीं है

    अगर result, SUCCESS है, तो स्कैनर ड्राइवर से मिले क्रम में विकल्प ग्रुप की सूची उपलब्ध कराता है.

  • नतीजा

    विकल्पों के ग्रुप पाने का नतीजा. अगर इसकी वैल्यू SUCCESS है, तो groups प्रॉपर्टी की जानकारी अपने-आप भर जाएगी.

  • scannerHandle

    स्ट्रिंग

    वही स्कैनर हैंडल जो getOptionGroups को पास किया गया था.

GetScannerListResponse

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • नतीजा

    गिनती का नतीजा. ध्यान दें कि गड़बड़ी का मैसेज दिखने पर भी, कुछ नतीजे दिख सकते हैं.

  • स्कैनर

    दिए गए DeviceFilter से मैच करने वाले स्कैनर की सूची. यह सूची खाली भी हो सकती है.

OpenScannerResponse

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • विकल्प

    object ज़रूरी नहीं

    अगर result, SUCCESS है, तो यह की-वैल्यू मैपिंग उपलब्ध कराता है. इसमें कुंजी, डिवाइस के हिसाब से उपलब्ध विकल्प होती है और वैल्यू, ScannerOption का इंस्टेंस होती है.

  • नतीजा

    स्कैनर खोलने का नतीजा. अगर इसकी वैल्यू SUCCESS है, तो scannerHandle और options प्रॉपर्टी अपने-आप भर जाएंगी.

  • scannerHandle

    string ज़रूरी नहीं

    अगर result, SUCCESS है, तो स्कैनर का हैंडल, जिसका इस्तेमाल आगे की कार्रवाइयों के लिए किया जा सकता है.

  • scannerId

    स्ट्रिंग

    स्कैनर आईडी को openScanner() पर पास किया गया.

OperationResult

Chrome 125+ browser.* Chrome 148 से

एक enum, जो हर कार्रवाई का नतीजा दिखाता है.

Enum

"UNKNOWN"
कोई ऐसी गड़बड़ी हुई जिसकी जानकारी नहीं है या कोई सामान्य गड़बड़ी हुई.

"SUCCESS"
कार्रवाई पूरी हो गई.

"UNSUPPORTED"
यह कार्रवाई नहीं की जा सकती.

"CANCELLED"
कार्रवाई रद्द कर दी गई थी.

"DEVICE_BUSY"
डिवाइस व्यस्त है.

"INVALID"
डेटा या मेथड को पास किया गया आर्ग्युमेंट अमान्य है.

"WRONG_TYPE"
दी गई वैल्यू, मौजूदा विकल्प के लिए गलत डेटा टाइप है.

"EOF"
कोई और डेटा उपलब्ध नहीं है.

"ADF_JAMMED"
दस्तावेज़ फ़ीडर जाम हो गया है.

"ADF_EMPTY"
दस्तावेज़ फ़ीडर खाली है.

"COVER_OPEN"
फ़्लैटबेड का कवर खुला है.

"IO_ERROR"
डिवाइस से कनेक्ट करते समय कोई गड़बड़ी हुई.

"ACCESS_DENIED"
डिवाइस की पुष्टि करना ज़रूरी है.

"NO_MEMORY"
कार्रवाई पूरी करने के लिए, Chromebook में ज़रूरत के मुताबिक मेमोरी उपलब्ध नहीं है.

"UNREACHABLE"
डिवाइस से कनेक्ट नहीं किया जा सका.

"MISSING"
डिवाइस डिसकनेक्ट हो गया है.

"INTERNAL_ERROR"
कॉल करने वाले ऐप्लिकेशन के अलावा, कहीं और गड़बड़ी हुई है.

OptionConstraint

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • सूची

    string[] | number[] ज़रूरी नहीं

  • अधिकतम

    number ज़रूरी नहीं

  • न्यून

    number ज़रूरी नहीं

  • क्वांट

    number ज़रूरी नहीं

  • टाइप

OptionGroup

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • सदस्य

    string[]

    ड्राइवर के दिए गए क्रम में, विकल्प के नामों का कलेक्शन.

  • title

    स्ट्रिंग

    यह प्रिंट किया जा सकने वाला टाइटल उपलब्ध कराता है. उदाहरण के लिए, "ज्यामिति के विकल्प".

OptionSetting

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • नाम

    स्ट्रिंग

    इससे सेट किए जाने वाले विकल्प का नाम पता चलता है.

  • टाइप

    इससे विकल्प के डेटा टाइप के बारे में पता चलता है. अनुरोध किया गया डेटा टाइप, विकल्प के असल डेटा टाइप से मेल खाना चाहिए.

  • मान

    string | number | boolean | number[] ज़रूरी नहीं

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

OptionType

Chrome 125+ browser.* Chrome 148 से

किसी विकल्प का डेटा टाइप.

Enum

"UNKNOWN"
विकल्प के डेटा टाइप की जानकारी नहीं है. value प्रॉपर्टी को अनसेट कर दिया जाएगा.

"BOOL"
value प्रॉपर्टी की वैल्यू, truefalse होगी.

"INT"
साइन किया गया 32-बिट पूर्णांक. value प्रॉपर्टी, long या long[] होगी. यह इस बात पर निर्भर करता है कि विकल्प में एक से ज़्यादा वैल्यू ली जा सकती हैं या नहीं.

"FIXED"
1/65535 के रिज़ॉल्यूशन के साथ -32768-32767.9999 की रेंज में डबल. value प्रॉपर्टी, डबल या डबल[] होगी. यह इस बात पर निर्भर करता है कि विकल्प में एक से ज़्यादा वैल्यू ली जा सकती हैं या नहीं. ऐसी डबल वैल्यू जिन्हें सटीक तौर पर नहीं दिखाया जा सकता उन्हें उपलब्ध रेंज और सटीक वैल्यू के हिसाब से राउंड ऑफ़ किया जाएगा.

"STRING"
NUL ('\0') को छोड़कर, किसी भी बाइट का क्रम. value प्रॉपर्टी, DOMString होगी.

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

"GROUP"
ग्रुप बनाने का विकल्प. कोई वैल्यू नहीं है. इसे साथ काम करने के लिए शामिल किया गया है. हालांकि, आम तौर पर इसे ScannerOption वैल्यू में नहीं दिखाया जाएगा. getOptionGroups() का इस्तेमाल करके, ग्रुप की सूची और उनमें शामिल सदस्यों के विकल्प पाएं.

OptionUnit

Chrome 125+ browser.* Chrome 148 से

इससे ScannerOption.unit के डेटा टाइप के बारे में पता चलता है.

Enum

"UNITLESS"
वैल्यू, बिना यूनिट वाली संख्या है. उदाहरण के लिए, यह कोई थ्रेशोल्ड हो सकता है.

"PIXEL"
वैल्यू, पिक्सल की संख्या होती है. उदाहरण के लिए, स्कैन डाइमेंशन.

"BIT"
वैल्यू, बिट की संख्या होती है. उदाहरण के लिए, कलर डेप्थ.

"MM"
वैल्यू को मिलीमीटर में मापा जाता है. उदाहरण के लिए, स्कैन डाइमेंशन.

"डीपीआई"
इस वैल्यू को डॉट्स पर इंच में मेज़र किया जाता है. उदाहरण के लिए, रिज़ॉल्यूशन.

"PERCENT"
वैल्यू प्रतिशत में है, जैसे कि ब्राइटनेस.

"MICROSECOND"
वैल्यू को माइक्रोसेकंड में मेज़र किया जाता है. उदाहरण के लिए, एक्सपोज़र टाइम.

ReadScanDataResponse

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • डेटा

    ArrayBuffer ज़रूरी नहीं

    अगर result की वैल्यू SUCCESS है, तो इसमें स्कैन की गई इमेज के डेटा का अगला हिस्सा शामिल होता है. अगर result की वैल्यू EOF है, तो इसमें स्कैन की गई इमेज के डेटा का आखिरी हिस्सा शामिल होता है.

  • estimatedCompletion

    number ज़रूरी नहीं

    अगर result की वैल्यू SUCCESS है, तो यह अनुमान लगाया जाता है कि अब तक स्कैन किए गए कुल डेटा का कितना हिस्सा डिलीवर किया जा चुका है. यह वैल्यू 0 से 100 के बीच होती है.

  • काम

    स्ट्रिंग

    यह readScanData() को पास किया गया जॉब हैंडल उपलब्ध कराता है.

  • नतीजा

    डेटा पढ़ने का नतीजा. अगर इसकी वैल्यू SUCCESS है, तो data में इमेज डेटा का अगला चंक (शायद शून्य लंबाई वाला) शामिल होता है, जो पढ़ने के लिए तैयार है. अगर इसकी वैल्यू EOF है, तो data में इमेज डेटा का आखिरी हिस्सा शामिल होता है.

ScannerInfo

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • connectionType

    इससे पता चलता है कि स्कैनर, कंप्यूटर से कैसे कनेक्ट है.

  • deviceUuid

    स्ट्रिंग

    एक ही फ़िज़िकल डिवाइस पर ले जाने वाली अन्य ScannerInfo एंट्री से मैच करने के लिए.

  • imageFormats

    string[]

    एमआईएमई टाइप का एक कलेक्शन, जिसके लिए स्कैन किए गए दस्तावेज़ों को वापस पाने का अनुरोध किया जा सकता है.

  • निर्माता

    स्ट्रिंग

    स्कैनर का मैन्युफ़ैक्चरर.

  • मॉडल

    स्ट्रिंग

    स्कैनर का मॉडल, अगर उपलब्ध हो या सामान्य जानकारी.

  • नाम

    स्ट्रिंग

    स्कैनर का ऐसा नाम जिसे कोई व्यक्ति आसानी से पढ़ सके. यह नाम यूज़र इंटरफ़ेस (यूआई) में दिखता है.

  • protocolType

    स्ट्रिंग

    स्कैनर को ऐक्सेस करने के लिए इस्तेमाल किए गए प्रोटोकॉल या ड्राइवर का ब्यौरा, जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. जैसे, Mopria, WSD या epsonds. यह मुख्य रूप से तब काम आता है, जब किसी डिवाइस पर एक से ज़्यादा प्रोटोकॉल काम करते हों और उपयोगकर्ता को उनमें से कोई एक प्रोटोकॉल चुनना हो.

  • scannerId

    स्ट्रिंग

    किसी स्कैनर का आईडी.

  • सुरक्षित

    बूलियन

    अगर यह वैल्यू 'सही है' पर सेट है, तो स्कैनर कनेक्शन के ट्रांसपोर्ट को टीएलएस या यूएसबी जैसे पैसिव लिसनर से इंटरसेप्ट नहीं किया जा सकता.

ScannerOption

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • कॉन्फ़िगर करने की सुविधा

    इससे पता चलता है कि विकल्प को बदला जा सकता है या नहीं. साथ ही, यह भी पता चलता है कि इसे कैसे बदला जा सकता है.

  • सीमा

    OptionConstraint ज़रूरी नहीं

    स्कैनर के मौजूदा विकल्प पर OptionConstraint को तय करता है.

  • ब्यौरा

    स्ट्रिंग

    विकल्प के बारे में ज़्यादा जानकारी.

  • isActive

    बूलियन

    इससे पता चलता है कि विकल्प चालू है और इसे सेट या वापस लाया जा सकता है. अगर इसे 'गलत है' पर सेट किया जाता है, तो value प्रॉपर्टी सेट नहीं होगी.

  • isAdvanced

    बूलियन

    इससे पता चलता है कि यूज़र इंटरफ़ेस (यूआई) में, यह विकल्प डिफ़ॉल्ट रूप से नहीं दिखना चाहिए.

  • isAutoSettable

    बूलियन

    स्कैनर ड्राइवर, इसे अपने-आप सेट कर सकता है.

  • isDetectable

    बूलियन

    इससे पता चलता है कि इस विकल्प का पता सॉफ़्टवेयर से लगाया जा सकता है.

  • isEmulated

    बूलियन

    अगर वैल्यू 'सही है' पर सेट है, तो स्कैनर ड्राइवर इसे एम्युलेट करता है.

  • नाम

    स्ट्रिंग

    विकल्प का नाम, जिसमें अंग्रेज़ी के छोटे ASCII अक्षर, संख्याएं, और डैश शामिल हों. डायक्रिटिक इस्तेमाल करने की अनुमति नहीं है.

  • title

    स्ट्रिंग

    एक लाइन वाला टाइटल, जिसे प्रिंट किया जा सके.

  • टाइप

    value प्रॉपर्टी में मौजूद डेटा टाइप, जो इस विकल्प को सेट करने के लिए ज़रूरी है.

  • यूनिट

    इस विकल्प के लिए मेज़रमेंट की इकाई.

  • मान

    string | number | boolean | number[] ज़रूरी नहीं

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

ScanOptions

प्रॉपर्टी

  • maxImages

    number ज़रूरी नहीं

    स्कैन की जा सकने वाली इमेज की संख्या. डिफ़ॉल्ट रूप से, यह वैल्यू 1 होती है.

  • mimeTypes

    string[] ज़रूरी नहीं

    कॉल करने वाले व्यक्ति ने जिन एमआईएमई टाइप को स्वीकार किया है.

ScanResults

प्रॉपर्टी

  • dataUrls

    string[]

    डेटा इमेज के यूआरएल का कलेक्शन, ऐसे फ़ॉर्मैट में होना चाहिए जिसे इमेज टैग में "src" वैल्यू के तौर पर पास किया जा सके.

  • mimeType

    स्ट्रिंग

    dataUrls का एमआईएमई टाइप.

SetOptionResult

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • नाम

    स्ट्रिंग

    इससे सेट किए गए विकल्प का नाम पता चलता है.

  • नतीजा

    इससे विकल्प सेट करने का नतीजा पता चलता है.

SetOptionsResponse

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • विकल्प

    object ज़रूरी नहीं

    दिए गए सभी विकल्पों को सेट करने के बाद, नए कॉन्फ़िगरेशन वाली ScannerOption वैल्यू के लिए, विकल्प के नामों से अपडेट की गई मुख्य-वैल्यू मैपिंग. इसका स्ट्रक्चर, OpenScannerResponse में मौजूद options प्रॉपर्टी जैसा ही है.

    यह प्रॉपर्टी तब भी सेट हो जाएगी, जब कुछ विकल्प सेट न हो पाए हों. हालांकि, अगर अपडेट किया गया कॉन्फ़िगरेशन वापस नहीं लाया जा सका, तो यह प्रॉपर्टी सेट नहीं होगी. उदाहरण के लिए, अगर स्कैनिंग के दौरान स्कैनर डिसकनेक्ट हो जाता है.

  • नतीजे

    नतीजों का कलेक्शन, जिसमें हर OptionSetting के लिए एक नतीजा होता है.

  • scannerHandle

    स्ट्रिंग

    यह setOptions() को पास किया गया स्कैनर हैंडल उपलब्ध कराता है.

StartScanOptions

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • फ़ॉर्मैट

    स्ट्रिंग

    इससे एमआईएमई टाइप के बारे में पता चलता है, ताकि स्कैन किए गए डेटा को वापस लाया जा सके.

  • maxReadSize

    number ज़रूरी नहीं

    अगर शून्य के अलावा कोई वैल्यू तय की जाती है, तो एक readScanData रिस्पॉन्स में स्कैन किए गए बाइट की संख्या, उस वैल्यू तक सीमित हो जाती है. सबसे छोटी वैल्यू 32768 (32 केबी) हो सकती है. अगर इस प्रॉपर्टी की वैल्यू तय नहीं की जाती है, तो स्कैन की गई इमेज के साइज़ के बराबर ही चंक का साइज़ हो सकता है.

StartScanResponse

Chrome 125+ browser.* Chrome 148 से

प्रॉपर्टी

  • काम

    string ज़रूरी नहीं

    अगर result, SUCCESS है, तो एक हैंडल उपलब्ध कराता है. इसका इस्तेमाल, स्कैन किए गए डेटा को पढ़ने या जॉब को रद्द करने के लिए किया जा सकता है.

  • नतीजा

    स्कैन शुरू करने का नतीजा. अगर इसकी वैल्यू SUCCESS है, तो job प्रॉपर्टी की जानकारी अपने-आप भर जाएगी.

  • scannerHandle

    स्ट्रिंग

    यह वही स्कैनर हैंडल उपलब्ध कराता है जो startScan() को पास किया गया था.

तरीके

cancelScan()

Chrome 125+ browser.* Chrome 148 से
browser.documentScan.cancelScan(
  job: string,
)
: Promise<CancelScanResponse>

यह शुरू किए गए स्कैन को रद्द करता है और एक प्रॉमिस दिखाता है, जो CancelScanResponse ऑब्जेक्ट के साथ रिज़ॉल्व होता है. अगर कॉलबैक का इस्तेमाल किया जाता है, तो ऑब्जेक्ट को कॉलबैक में पास किया जाता है.

पैरामीटर

  • काम

    स्ट्रिंग

    startScan को किए गए कॉल से पहले मिले, स्कैन करने के किसी ऐक्टिव जॉब का हैंडल.

रिटर्न

  • यह एक प्रॉमिस दिखाता है, जो नतीजे के साथ रिज़ॉल्व होता है.

closeScanner()

Chrome 125+ browser.* Chrome 148 से
browser.documentScan.closeScanner(
  scannerHandle: string,
)
: Promise<CloseScannerResponse>

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

पैरामीटर

  • scannerHandle

    स्ट्रिंग

    यह खुले हुए स्कैनर का हैंडल तय करता है. यह हैंडल, openScanner को किए गए कॉल से पहले मिला था.

रिटर्न

  • यह एक प्रॉमिस दिखाता है, जो नतीजे के साथ रिज़ॉल्व होता है.

getOptionGroups()

Chrome 125+ browser.* Chrome 148 से
browser.documentScan.getOptionGroups(
  scannerHandle: string,
)
: Promise<GetOptionGroupsResponse>

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

पैरामीटर

  • scannerHandle

    स्ट्रिंग

    openScanner को किए गए कॉल से मिले ओपन स्कैनर का हैंडल.

रिटर्न

  • यह एक प्रॉमिस दिखाता है, जो नतीजे के साथ रिज़ॉल्व होता है.

getScannerList()

Chrome 125+ browser.* Chrome 148 से
browser.documentScan.getScannerList(
  filter: DeviceFilter,
)
: Promise<GetScannerListResponse>

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

पैरामीटर

  • फ़िल्टर

    एक DeviceFilter, जो यह बताता है कि किस तरह के स्कैनर दिखाए जाने चाहिए.

रिटर्न

  • यह एक Promise दिखाता है, जो नतीजे और स्कैनर की सूची के साथ रिज़ॉल्व होता है.

openScanner()

Chrome 125+ browser.* Chrome 148 से
browser.documentScan.openScanner(
  scannerId: string,
)
: Promise<OpenScannerResponse>

यह खास ऐक्सेस के लिए स्कैनर खोलता है और एक Promise दिखाता है, जो OpenScannerResponse ऑब्जेक्ट के साथ रिज़ॉल्व होता है. अगर इस फ़ंक्शन को कोई कॉलबैक पास किया जाता है, तो वापस किया गया डेटा उसे पास कर दिया जाता है.

पैरामीटर

  • scannerId

    स्ट्रिंग

    खोले जाने वाले स्कैनर का आईडी. यह वैल्यू, getScannerList को किए गए पिछले कॉल से मिली है.

रिटर्न

  • यह एक प्रॉमिस दिखाता है, जो नतीजे के साथ रिज़ॉल्व होता है.

readScanData()

Chrome 125+ browser.* Chrome 148 से
browser.documentScan.readScanData(
  job: string,
)
: Promise<ReadScanDataResponse>

यह किसी ऐक्टिव जॉब हैंडल से, उपलब्ध इमेज डेटा के अगले हिस्से को पढ़ता है. साथ ही, एक प्रॉमिस दिखाता है जो ReadScanDataResponse ऑब्जेक्ट के साथ रिज़ॉल्व होता है. अगर कॉलबैक का इस्तेमाल किया जाता है, तो ऑब्जेक्ट को कॉलबैक में पास किया जाता है.

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

स्कैन जॉब पूरा होने पर, जवाब में नतीजे की वैल्यू EOF होगी. इस रिस्पॉन्स में, शून्य के अलावा कोई अन्य आखिरी data मेंबर हो सकता है.

पैरामीटर

  • काम

    स्ट्रिंग

    ऐक्टिव जॉब हैंडल, जिसे पहले startScan से वापस किया गया था.

रिटर्न

  • यह एक प्रॉमिस दिखाता है, जो नतीजे के साथ रिज़ॉल्व होता है.

scan()

browser.documentScan.scan(
  options: ScanOptions,
)
: Promise<ScanResults>

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

पैरामीटर

  • विकल्प

    स्कैन पैरामीटर वाला ऑब्जेक्ट.

रिटर्न

  • Promise<ScanResults>

    Chrome 96+ Chrome 148 से browser.*

    यह एक प्रॉमिस दिखाता है, जो स्कैन के नतीजों के साथ रिज़ॉल्व होता है.

setOptions()

Chrome 125+ browser.* Chrome 148 से
browser.documentScan.setOptions(
  scannerHandle: string,
  options: OptionSetting[],
)
: Promise<SetOptionsResponse>

यह फ़ंक्शन, चुने गए स्कैनर के लिए विकल्प सेट करता है. साथ ही, यह एक Promise दिखाता है, जो SetOptionsResponse ऑब्जेक्ट के साथ रिज़ॉल्व होता है. इस ऑब्जेक्ट में, पास किए गए OptionSetting ऑब्जेक्ट के क्रम में हर वैल्यू को सेट करने की कोशिश का नतीजा शामिल होता है. अगर कॉलबैक का इस्तेमाल किया जाता है, तो ऑब्जेक्ट को कॉलबैक में पास किया जाता है.

पैरामीटर

  • scannerHandle

    स्ट्रिंग

    स्कैनर का हैंडल, जिस पर विकल्प सेट करने हैं. यह वैल्यू, openScanner को किए गए कॉल से पहले मिली वैल्यू होनी चाहिए.

  • विकल्प

    स्कैनर पर लागू किए जाने वाले OptionSetting ऑब्जेक्ट की सूची.

रिटर्न

  • यह एक प्रॉमिस दिखाता है, जो नतीजे के साथ रिज़ॉल्व होता है.

startScan()

Chrome 125+ browser.* Chrome 148 से
browser.documentScan.startScan(
  scannerHandle: string,
  options: StartScanOptions,
)
: Promise<StartScanResponse>

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

पैरामीटर

  • scannerHandle

    स्ट्रिंग

    खुले हुए स्कैनर का हैंडल. यह वैल्यू, openScanner को किए गए कॉल से पहले मिली वैल्यू होनी चाहिए.

  • विकल्प

    StartScanOptions ऑब्जेक्ट, जो स्कैन के लिए इस्तेमाल किए जाने वाले विकल्पों के बारे में बताता है. StartScanOptions.format प्रॉपर्टी, स्कैनर के ScannerInfo में मौजूद किसी एक एंट्री से मैच होनी चाहिए.

रिटर्न

  • यह एक प्रॉमिस दिखाता है, जो नतीजे के साथ रिज़ॉल्व होता है.