chrome.documentScan

คำอธิบาย

ใช้ chrome.documentScan API เพื่อค้นหาและดึงรูปภาพจากเครื่องสแกนเอกสารที่แนบมา

Document Scan API ออกแบบมาเพื่อให้แอปและส่วนขยายดูเนื้อหาของเอกสารกระดาษในเครื่องสแกนเอกสารที่แนบมาได้

สิทธิ์

documentScan

ความพร้อมใช้งาน

Chrome 44 ขึ้นไป ChromeOS เท่านั้น
ความพร้อมให้บริการสำหรับสมาชิก API ที่เพิ่มในภายหลังจะแสดงพร้อมกับสมาชิกเหล่านั้น

แนวคิดและการใช้งาน

API นี้รองรับการสแกนเอกสาร 2 วิธี หากกรณีการใช้งานของคุณใช้ได้ กับเครื่องสแกนทุกเครื่องและไม่จำเป็นต้องควบคุมการกำหนดค่า ให้ใช้วิธีscan() กรณีการใช้งานที่ซับซ้อนมากขึ้นต้องใช้วิธีการร่วมกัน ซึ่งรองรับเฉพาะใน Chrome 124 ขึ้นไป

การสแกนอย่างง่าย

สำหรับกรณีการใช้งานที่เรียบง่าย ซึ่งหมายถึงกรณีที่ใช้ได้กับเครื่องสแกนทุกเครื่องและไม่ ต้องมีการควบคุมการกำหนดค่า โปรดโทรหา scan() เมธอดนี้รับออบเจ็กต์ ScanOptions และแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ ScanResults ความสามารถของตัวเลือกนี้จำกัดไว้ที่จำนวนการสแกนและ ประเภท MIME ที่ผู้โทรยอมรับ ระบบจะแสดงผลการสแกนเป็น URL เพื่อแสดงในแท็ก <img> สำหรับอินเทอร์เฟซผู้ใช้

การสแกนที่ซับซ้อน

การสแกนที่ซับซ้อนจะดำเนินการใน 3 เฟสตามที่อธิบายไว้ในส่วนนี้ โครงร่างนี้ไม่ได้อธิบายอาร์กิวเมนต์ของเมธอดหรือพร็อพเพอร์ตี้ทุกรายการที่ส่งคืน ในการตอบกลับ โดยมีวัตถุประสงค์เพื่อให้คำแนะนำทั่วไปในการเขียนโค้ดสแกนเนอร์ เท่านั้น

Discovery

  1. โทรหา getScannerList() ระบบจะแสดงเครื่องสแกนที่พร้อมใช้งานใน Promise ที่จะได้รับการแก้ไขด้วย GetScannerListResponse

    • ออบเจ็กต์การตอบกลับมีอาร์เรย์ของออบเจ็กต์ ScannerInfo
    • อาร์เรย์อาจมีรายการหลายรายการสำหรับสแกนเนอร์เครื่องเดียว หากสแกนเนอร์นั้นรองรับหลายโปรโตคอลหรือวิธีการเชื่อมต่อ
  2. เลือกสแกนเนอร์จากอาร์เรย์ที่ส่งคืนและบันทึกค่าของพร็อพเพอร์ตี้ scannerId

    ใช้พร็อพเพอร์ตี้ของออบเจ็กต์ ScannerInfo แต่ละรายการ เพื่อแยกความแตกต่างระหว่างออบเจ็กต์หลายรายการสำหรับสแกนเนอร์เดียวกัน ออบเจ็กต์จาก สแกนเนอร์เดียวกันจะมีค่าเดียวกันสำหรับพร็อพเพอร์ตี้ deviceUuid ScannerInfo ยังมีพร็อพเพอร์ตี้ imageFormats ที่มีอาร์เรย์ของประเภทรูปภาพที่รองรับด้วย

การกำหนดค่าเครื่องสแกน

  1. เรียกใช้ openScanner() โดยส่งรหัสเครื่องสแกนที่บันทึกไว้ โดยจะแสดงผล Promise ที่แก้ไขด้วย OpenScannerResponse ออบเจ็กต์การตอบกลับประกอบด้วยข้อมูลต่อไปนี้

    • พร็อพเพอร์ตี้ scannerHandle ซึ่งคุณจะต้องบันทึก

    • พร็อพเพอร์ตี้ตัวเลือกที่มีพร็อพเพอร์ตี้เฉพาะสแกนเนอร์ ซึ่งคุณจะต้องตั้งค่า ดูข้อมูลเพิ่มเติมได้ที่หัวข้อเรียกตัวเลือกสแกนเนอร์

  2. (ไม่บังคับ) หากต้องการให้ผู้ใช้ระบุค่าสำหรับตัวเลือกสแกนเนอร์ ให้สร้างอินเทอร์เฟซผู้ใช้ คุณจะต้องใช้ตัวเลือกเครื่องสแกนที่ได้รับจาก ขั้นตอนก่อนหน้า และจะต้องดึงกลุ่มตัวเลือกที่ได้รับจาก เครื่องสแกน ดูข้อมูลเพิ่มเติมได้ที่สร้างอินเทอร์เฟซผู้ใช้

  3. สร้างอาร์เรย์ของออบเจ็กต์ OptionSetting โดยใช้ค่าที่ได้จากโปรแกรมหรือค่าที่ผู้ใช้ระบุ ดูข้อมูลเพิ่มเติมได้ที่ตั้งค่าตัวเลือกสแกนเนอร์

  4. ส่งอาร์เรย์ของออบเจ็กต์ OptionSetting ไปยัง setOptions() เพื่อตั้งค่าตัวเลือกสำหรับเครื่องสแกน โดยจะ แสดงผล Promise ที่แก้ไขด้วย SetOptionsResponse ออบเจ็กต์นี้มีตัวเลือกเครื่องสแกนเวอร์ชันที่อัปเดตแล้วซึ่งดึงข้อมูลมาในขั้นตอนที่ 1 ของการกำหนดค่าเครื่องสแกน

    เนื่องจากการเปลี่ยนตัวเลือกหนึ่งอาจส่งผลต่อข้อจำกัดของอีกตัวเลือกหนึ่ง คุณอาจต้องทำตามขั้นตอนเหล่านี้ซ้ำหลายครั้ง

กำลังสแกน

  1. สร้างออบเจ็กต์ StartScanOptions แล้วส่งไปยัง startScan() โดยจะแสดงผล Promise ที่แก้ไข ด้วย StartScanResponse jobพร็อพเพอร์ตี้ของออบเจ็กต์นี้ คือแฮนเดิลที่คุณจะใช้เพื่ออ่านข้อมูลการสแกนหรือยกเลิกการสแกน

  2. ส่งแฮนเดิลของงานให้ readScanData() โดยจะส่งคืน Promise ที่จะแสดงผลออบเจ็กต์ ReadScanDataResponse หากอ่านข้อมูลสำเร็จ พร็อพเพอร์ตี้ result จะเท่ากับ SUCCESS และพร็อพเพอร์ตี้ data จะมี ArrayBuffer ที่มีส่วนหนึ่งของการสแกน โปรดทราบว่า estimatedCompletion มีเปอร์เซ็นต์โดยประมาณ ของข้อมูลทั้งหมดที่ส่งแล้วจนถึงตอนนี้

  3. ทำขั้นตอนก่อนหน้าซ้ำจนกว่าพร็อพเพอร์ตี้ result จะเท่ากับ EOF หรือเกิดข้อผิดพลาด

เมื่อสแกนเสร็จแล้ว ให้เรียกใช้ closeScanner() โดยใช้แฮนเดิลของเครื่องสแกนที่บันทึกไว้ในขั้นตอน ที่ 3 โดยจะแสดงผล Promise ที่แก้ไขด้วย CloseScannerResponse การโทร cancelScan() ได้ทุกเมื่อหลังจากสร้างงานจะ สิ้นสุดการสแกน

ออบเจ็กต์การตอบกลับ

ทุกเมธอดจะแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์การตอบกลับบางประเภท โดยส่วนใหญ่จะมีพร็อพเพอร์ตี้ result ที่มีค่าเป็นสมาชิกของ OperationResult พร็อพเพอร์ตี้บางอย่างของออบเจ็กต์การตอบกลับ จะไม่มีค่า เว้นแต่ค่าของ result จะมีค่าที่เฉพาะเจาะจง ความสัมพันธ์เหล่านี้ อธิบายไว้ในการอ้างอิงสำหรับออบเจ็กต์การตอบกลับแต่ละรายการ

เช่น OpenScannerResponse.scannerHandle จะมีค่าก็ต่อเมื่อ OpenScannerResponse.result เท่ากับ SUCCESS

ตัวเลือกเครื่องสแกน

ตัวเลือกสแกนเนอร์จะแตกต่างกันไปตามอุปกรณ์ ด้วยเหตุนี้ จึงไม่สามารถ แสดงตัวเลือกเครื่องสแกนโดยตรงภายใน DocumentScan API หากต้องการหลีกเลี่ยงปัญหานี้ OpenScannerResponse (ดึงข้อมูลโดยใช้ openScanner()) และ SetOptionsResponse (ออบเจ็กต์การตอบกลับสำหรับ setOptions()) จะมีพร็อพเพอร์ตี้ options ซึ่งเป็น ออบเจ็กต์ที่มีตัวเลือกเฉพาะของสแกนเนอร์ แต่ละตัวเลือกคือการแมปคีย์-ค่า โดยที่คีย์คือตัวเลือกเฉพาะอุปกรณ์ และค่าคืออินสแตนซ์ของ ScannerOption

โดยทั่วไปแล้ว โครงสร้างจะมีลักษณะดังนี้

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

เช่น ลองนึกถึงสแกนเนอร์ที่แสดงตัวเลือกชื่อ "source" และ "resolution" โครงสร้างของออบเจ็กต์ options ที่แสดงผลจะมีลักษณะ คล้ายตัวอย่างต่อไปนี้ เพื่อความเรียบง่าย ระบบจะแสดงเฉพาะScannerOption คำตอบบางส่วน

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

สร้างอินเทอร์เฟซผู้ใช้

แม้ว่าจะไม่จำเป็นต้องใช้ API นี้ แต่คุณอาจต้องการให้ผู้ใช้เลือกค่าสำหรับตัวเลือกใดตัวเลือกหนึ่ง ซึ่งต้องใช้ส่วนติดต่อผู้ใช้ ใช้ OpenScannerResponse (เปิดโดย openScanner()) เพื่อดึงตัวเลือกสำหรับสแกนเนอร์ที่แนบมา ตามที่อธิบายไว้ในส่วนก่อนหน้า

เครื่องสแกนบางรุ่นจะจัดกลุ่มตัวเลือกในลักษณะเฉพาะของอุปกรณ์ โดยจะไม่มีผลต่อลักษณะการทำงานของตัวเลือก แต่เนื่องจากกลุ่มเหล่านี้อาจมีการกล่าวถึงในเอกสารประกอบผลิตภัณฑ์ของสแกนเนอร์ จึงควรแสดงกลุ่มดังกล่าวต่อผู้ใช้ คุณสามารถเรียกข้อมูลกลุ่มเหล่านี้ได้โดยโทรไปที่ getOptionGroups() ซึ่งจะแสดงผลเป็น Promise ที่จะได้รับการแก้ไขด้วยออบเจ็กต์ GetOptionGroupsResponse groups ของออบเจ็กต์มีอาร์เรย์ของกลุ่มที่เฉพาะเจาะจงสำหรับสแกนเนอร์ ใช้ข้อมูลในกลุ่มเหล่านี้เพื่อจัดระเบียบตัวเลือกในOpenScannerResponseสำหรับการแสดงผล

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

ดังที่ระบุไว้ในการกำหนดค่าเครื่องสแกน การเปลี่ยนตัวเลือกหนึ่งอาจเปลี่ยนข้อจำกัด ในอีกตัวเลือกหนึ่ง ด้วยเหตุนี้ setOptionsResponse (ออบเจ็กต์การตอบกลับสำหรับ setOptions()) จึงมีพร็อพเพอร์ตี้ options อีกรายการ ใช้ สิ่งนี้เพื่ออัปเดตอินเทอร์เฟซผู้ใช้ จากนั้นทำซ้ำตามที่จำเป็นจนกว่าจะตั้งค่าตัวเลือกทั้งหมด

ตั้งค่าตัวเลือกเครื่องสแกน

ตั้งค่าตัวเลือกเครื่องสแกนโดยส่งอาร์เรย์ของออบเจ็กต์ OptionSetting ไปยัง setOptions() ดูตัวอย่างได้ที่ส่วนสแกนหน้าขนาด Letter 1 หน้า

ตัวอย่าง

ดึงข้อมูลหน้าเว็บเป็น Blob

ตัวอย่างนี้แสดงวิธีหนึ่งในการดึงข้อมูลหน้าจากสแกนเนอร์เป็น Blob และ แสดงการใช้ startScan() และ readScanData() โดยใช้ค่าของ OperationResult

async function pageAsBlob(handle) {   let response = await chrome.documentScan.startScan(       handle, {format: "image/jpeg"});   if (response.result != chrome.documentScan.OperationResult.SUCCESS) {     return null;   }   const job = response.job;    let imgParts = [];   response = await chrome.documentScan.readScanData(job);   while (response.result == chrome.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 chrome.documentScan.readScanData(job);   }   if (response.result != chrome.documentScan.OperationResult.EOF) {     return null;   }   if (response.data && response.data.byteLength > 0) {     imgParts.push(response.data);   }   return new Blob(imgParts, { type: "image/jpeg" }); } 

สแกนหน้าขนาด Letter 1 หน้า

ตัวอย่างนี้แสดงวิธีเลือกสแกนเนอร์ ตั้งค่าตัวเลือก และเปิดสแกนเนอร์ จากนั้นจะดึงเนื้อหาของหน้าเดียวและปิดเครื่องสแกน กระบวนการนี้ แสดงให้เห็นการใช้ getScannerList(), openScanner(), setOptions() และ closeScanner() โปรดทราบว่าระบบจะดึงเนื้อหาของหน้าเว็บโดยการเรียกฟังก์ชัน pageAsBlob() จากตัวอย่างก่อนหน้า

async function scan() {     let response = await chrome.documentScan.getScannerList({ secure: true });     let scanner = await chrome.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: chrome.documentScan.OptionType.STRING,                 value: { value: source }             });             break;         }     }     options.push({         name: "tl-x",         type: chrome.documentScan.OptionType.FIXED,         value: 0.0     });     options.push({         name: "br-x",         type: chrome.documentScan.OptionType.FIXED,         value: 215.9  // 8.5" in mm     });     options.push({         name: "tl-y",         type: chrome.documentScan.OptionType.FIXED,         value: 0.0     });     options.push({         name: "br-y",         type: chrome.documentScan.OptionType.FIXED,         value: 279.4  // 11" in mm     });     response = await chrome.documentScan.setOptions(handle, options);      let imgBlob = await pageAsBlob(handle);     if (imgBlob != null) {         // Insert imgBlob into DOM, save to disk, etc     }     await chrome.documentScan.closeScanner(handle); } 

แสดงการกำหนดค่า

ดังที่ระบุไว้ในส่วนอื่นๆ การแสดงตัวเลือกการกำหนดค่าของสแกนเนอร์ต่อผู้ใช้ต้องมีการเรียกใช้ getOptionGroups() นอกเหนือจากตัวเลือกสแกนเนอร์ที่ส่งคืนจากการเรียกใช้ openScanner() เพื่อให้แสดงตัวเลือกแก่ผู้ใช้ในกลุ่มที่ผู้ผลิตกำหนดได้ ตัวอย่างนี้แสดงวิธีดำเนินการดังกล่าว

async function showConfig() {   let response = await chrome.documentScan.getScannerList({ secure: true });   let scanner = await chrome.documentScan.openScanner(       response.scanners[0].scannerId);   let groups = await chrome.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 ขึ้นไป

พร็อพเพอร์ตี้

  • งาน

    สตริง

    ระบุแฮนเดิลงานเดียวกันกับที่ส่งไปยัง cancelScan()

  • ผลลัพธ์

    ผลการยกเลิกการสแกนของแบ็กเอนด์ หากผลลัพธ์เป็น OperationResult.SUCCESS หรือ OperationResult.CANCELLED แสดงว่าระบบยกเลิกการสแกนแล้ว และสแกนเนอร์พร้อมที่จะเริ่มการสแกนใหม่ หากผลลัพธ์เป็น OperationResult.DEVICE_BUSY แสดงว่าเครื่องสแกนยังคงประมวลผลการยกเลิกที่ขออยู่ ผู้โทรควรรอสักครู่แล้วลองส่งคำขออีกครั้ง ค่าผลลัพธ์อื่นๆ แสดงข้อผิดพลาดถาวรที่ไม่ควรลองอีก

CloseScannerResponse

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • ผลลัพธ์

    ผลลัพธ์ของการปิดเครื่องสแกน แม้ว่าค่านี้จะไม่ใช่ SUCCESS แต่แฮนเดิลจะใช้ไม่ได้และไม่ควรนำไปใช้ในการดำเนินการใดๆ เพิ่มเติม

  • scannerHandle

    สตริง

    แฮนเดิลของเครื่องสแกนเดียวกันกับที่ส่งไปยัง closeScanner

Configurability

Chrome 125 ขึ้นไป

วิธีเปลี่ยนตัวเลือก

ค่าแจกแจง

"NOT_CONFIGURABLE"
ตัวเลือกเป็นแบบอ่านอย่างเดียว

"SOFTWARE_CONFIGURABLE"
ตั้งค่าตัวเลือกในซอฟต์แวร์ได้

"HARDWARE_CONFIGURABLE"
ผู้ใช้สามารถตั้งค่าตัวเลือกได้โดยการเปิด/ปิดหรือกดปุ่มบนสแกนเนอร์

ConnectionType

Chrome 125 ขึ้นไป

ระบุวิธีเชื่อมต่อสแกนเนอร์กับคอมพิวเตอร์

ค่าแจกแจง

"UNSPECIFIED"

"USB"

"NETWORK"

ConstraintType

Chrome 125 ขึ้นไป

ประเภทข้อมูลของข้อจำกัดที่แสดงโดย OptionConstraint

ค่าแจกแจง

"INT_RANGE"
ข้อจำกัดเกี่ยวกับช่วงของค่า OptionType.INT พร็อพเพอร์ตี้ min, max และ quant ของ OptionConstraint จะเป็น long และพร็อพเพอร์ตี้ list จะไม่ได้ตั้งค่า

"FIXED_RANGE"
ข้อจำกัดเกี่ยวกับช่วงของค่า OptionType.FIXED พร็อพเพอร์ตี้ min, max และ quant ของ OptionConstraint จะเป็น 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 ขึ้นไป

พร็อพเพอร์ตี้

  • local

    บูลีน ไม่บังคับ

    ส่งคืนเฉพาะสแกนเนอร์ที่เชื่อมต่อกับคอมพิวเตอร์โดยตรง

  • ปลอดภัย

    บูลีน ไม่บังคับ

    แสดงเฉพาะสแกนเนอร์ที่ใช้การส่งที่ปลอดภัย เช่น USB หรือ TLS

GetOptionGroupsResponse

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • กลุ่ม

    OptionGroup[] ไม่บังคับ

    หาก result เป็น SUCCESS จะแสดงรายการกลุ่มตัวเลือกตามลำดับที่ไดรเวอร์เครื่องสแกนระบุ

  • ผลลัพธ์

    ผลลัพธ์ของการรับกลุ่มตัวเลือก หากค่านี้เป็น SUCCESS ระบบจะกรอกข้อมูลพร็อพเพอร์ตี้ groups

  • scannerHandle

    สตริง

    แฮนเดิลของเครื่องสแกนเดียวกันกับที่ส่งไปยัง getOptionGroups

GetScannerListResponse

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • ผลลัพธ์

    ผลการแจงนับ โปรดทราบว่าระบบอาจแสดงผลลัพธ์บางส่วนแม้ว่าการดำเนินการนี้จะระบุข้อผิดพลาดก็ตาม

  • สแกนเนอร์

    รายการเครื่องสแกนที่อาจว่างเปล่าซึ่งตรงกับ DeviceFilter ที่ระบุ

OpenScannerResponse

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • ตัวเลือก

    object ไม่บังคับ

    หาก result เป็น SUCCESS ให้ระบุการแมปคีย์-ค่าโดยที่คีย์เป็นตัวเลือกเฉพาะอุปกรณ์ และค่าเป็นอินสแตนซ์ของ ScannerOption

  • ผลลัพธ์

    ผลลัพธ์ของการเปิดเครื่องสแกน หากค่านี้เป็น SUCCESS ระบบจะกรอกข้อมูลพร็อพเพอร์ตี้ scannerHandle และ options

  • scannerHandle

    สตริง ไม่บังคับ

    หาก result เป็น SUCCESS จะเป็นแฮนเดิลของเครื่องสแกนที่ใช้สำหรับการดำเนินการเพิ่มเติมได้

  • scannerId

    สตริง

    รหัสเครื่องสแกนที่ส่งไปยัง openScanner()

OperationResult

Chrome 125 ขึ้นไป

การแจงนับที่ระบุผลลัพธ์ของการดำเนินการแต่ละอย่าง

ค่าแจกแจง

"ไม่ทราบ"
เกิดข้อผิดพลาดที่ไม่รู้จักหรือทั่วไป

"SUCCESS"
การดำเนินการสำเร็จ

"ไม่รองรับ"
ไม่รองรับการดำเนินการนี้

"ยกเลิกแล้ว"
การดำเนินการถูกยกเลิก

"DEVICE_BUSY"
อุปกรณ์ยังไม่ว่าง

"ไม่ถูกต้อง"
ข้อมูลหรืออาร์กิวเมนต์ที่ส่งไปยังเมธอดไม่ถูกต้อง

"WRONG_TYPE"
ค่าที่ระบุมีประเภทข้อมูลที่ไม่ถูกต้องสำหรับตัวเลือกพื้นฐาน

"EOF"
ไม่มีข้อมูลเพิ่มเติม

"ADF_JAMMED"
ตัวป้อนเอกสารมีกระดาษติด

"ADF_EMPTY"
ไม่มีเอกสารในตัวป้อนเอกสาร

"COVER_OPEN"
ฝาของเครื่องสแกนแบบแท่นเปิดอยู่

"IO_ERROR"
เกิดข้อผิดพลาดขณะสื่อสารกับอุปกรณ์

"ACCESS_DENIED"
อุปกรณ์ต้องมีการตรวจสอบสิทธิ์

"NO_MEMORY"
Chromebook มีหน่วยความจำไม่เพียงพอที่จะดำเนินการให้เสร็จสมบูรณ์

"เข้าถึงไม่ได้"
เข้าถึงอุปกรณ์ไม่ได้

"สูญหาย"
อุปกรณ์ไม่ได้เชื่อมต่ออยู่

"INTERNAL_ERROR"
เกิดข้อผิดพลาดที่อื่นนอกเหนือจากแอปพลิเคชันที่เรียกใช้

OptionConstraint

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • list

    string[] | number[] ไม่บังคับ

  • สูงสุด

    หมายเลข ไม่บังคับ

  • นาที

    หมายเลข ไม่บังคับ

  • quant

    หมายเลข ไม่บังคับ

  • ประเภท

OptionGroup

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • สมาชิก

    string[]

    อาร์เรย์ของชื่อตัวเลือกตามลำดับที่ผู้ขับระบุ

  • title

    สตริง

    ระบุชื่อที่พิมพ์ได้ เช่น "ตัวเลือกเรขาคณิต"

OptionSetting

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • ชื่อ

    สตริง

    ระบุชื่อของตัวเลือกที่จะตั้งค่า

  • ประเภท

    ระบุประเภทข้อมูลของตัวเลือก ประเภทข้อมูลที่ขอต้องตรงกับประเภทข้อมูลจริงของตัวเลือกพื้นฐาน

  • value

    สตริง | ตัวเลข | บูลีน | หมายเลข[] ไม่บังคับ

    ระบุค่าที่จะตั้ง ปล่อยว่างไว้เพื่อขอการตั้งค่าอัตโนมัติสำหรับตัวเลือกที่autoSettableเปิดใช้ ประเภทข้อมูลที่ระบุสำหรับ value ต้องตรงกับ type

OptionType

Chrome 125 ขึ้นไป

ประเภทข้อมูลของตัวเลือก

ค่าแจกแจง

"ไม่ทราบ"
ไม่ทราบประเภทข้อมูลของตัวเลือก ระบบจะยกเลิกการตั้งค่าพร็อพเพอร์ตี้ value

"BOOL"
พร็อพเพอร์ตี้ value จะเป็นค่าใดค่าหนึ่งระหว่าง truefalse

"INT"
จำนวนเต็มแบบ 32 บิตที่มีการลงนาม พร็อพเพอร์ตี้ value จะเป็น long หรือ long[] ขึ้นอยู่กับว่าตัวเลือกนั้นมีค่ามากกว่า 1 ค่าหรือไม่

"FIXED"
ค่า Double ในช่วง -32768-32767.9999 ที่มีความละเอียด 1/65535 พร็อพเพอร์ตี้ value จะเป็น double หรือ double[] ขึ้นอยู่กับว่าตัวเลือกมีค่ามากกว่า 1 ค่าหรือไม่ ค่า Double ที่แสดงอย่างแน่นอนไม่ได้จะได้รับการปัดเศษเป็นช่วงและความแม่นยำที่ใช้ได้

"STRING"
ลำดับของไบต์ใดก็ได้ยกเว้น NUL ("\0") พร็อพเพอร์ตี้ value จะเป็น DOMString

"BUTTON"
ตัวเลือกประเภทนี้ไม่มีค่า แต่การตั้งค่าตัวเลือกประเภทนี้จะทำให้เกิดผลข้างเคียงเฉพาะตัวเลือกในไดรเวอร์ของสแกนเนอร์ ตัวอย่างเช่น ไดรเวอร์สแกนเนอร์อาจใช้ตัวเลือกประเภทปุ่มเพื่อเป็นวิธีเลือกค่าเริ่มต้น หรือบอกตัวป้อนเอกสารอัตโนมัติให้เลื่อนไปยังกระดาษแผ่นถัดไป

"GROUP"
ตัวเลือกการจัดกลุ่ม ไม่มีค่า ซึ่งรวมไว้เพื่อความเข้ากันได้ แต่โดยปกติแล้วจะไม่แสดงในค่า ScannerOption ใช้ getOptionGroups() เพื่อดึงข้อมูลรายการกลุ่มพร้อมตัวเลือกสมาชิก

OptionUnit

Chrome 125 ขึ้นไป

ระบุประเภทข้อมูลสำหรับ ScannerOption.unit

ค่าแจกแจง

"UNITLESS"
ค่าเป็นตัวเลขที่ไม่มีหน่วย เช่น อาจเป็นเกณฑ์

"PIXEL"
ค่าคือจำนวนพิกเซล เช่น ขนาดการสแกน

"BIT"
ค่าคือจำนวนบิต เช่น ความลึกของสี

"มม."
ค่าจะวัดเป็นมิลลิเมตร เช่น ขนาดการสแกน

"DPI"
ค่าจะวัดเป็นจุดต่อนิ้ว เช่น ความละเอียด

"PERCENT"
ค่าเป็นเปอร์เซ็นต์ เช่น ความสว่าง

"MICROSECOND"
ค่าจะวัดเป็นไมโครวินาที เช่น เวลาเปิดรับแสง

ReadScanDataResponse

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • เพิ่มเติม

    ArrayBuffer ไม่บังคับ

    หาก result เป็น SUCCESS จะมีข้อมูลรูปภาพที่สแกนแล้วถัดไป หาก result เป็น EOF จะมีข้อมูลรูปภาพที่สแกนสุดท้าย

  • estimatedCompletion

    หมายเลข ไม่บังคับ

    หาก result เป็น SUCCESS ค่าประมาณของข้อมูลการสแกนทั้งหมดที่ส่งแล้วจนถึงตอนนี้ในช่วง 0 ถึง 100

  • งาน

    สตริง

    ระบุแฮนเดิลของงานที่ส่งไปยัง readScanData()

  • ผลลัพธ์

    ผลลัพธ์ของการอ่านข้อมูล หากค่าเป็น SUCCESS แสดงว่า data มีข้อมูลรูปภาพส่วน next (อาจมีความยาวเป็น 0) ที่พร้อมอ่าน หากมีค่าเป็น EOF data จะมีข้อมูลรูปภาพส่วนสุดท้าย

ScannerInfo

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • connectionType

    ระบุวิธีเชื่อมต่อสแกนเนอร์กับคอมพิวเตอร์

  • deviceUuid

    สตริง

    สำหรับการจับคู่กับรายการ ScannerInfo อื่นๆ ที่ชี้ไปยังอุปกรณ์จริงเดียวกัน

  • imageFormats

    string[]

    อาร์เรย์ของประเภท MIME ที่ขอได้สำหรับการสแกนที่ส่งคืน

  • ผู้ผลิต

    สตริง

    ผู้ผลิตเครื่องสแกน

  • รุ่น

    สตริง

    รุ่นของสแกนเนอร์ (หากมี) หรือคำอธิบายทั่วไป

  • ชื่อ

    สตริง

    ชื่อที่มนุษย์อ่านได้สำหรับเครื่องสแกนเพื่อแสดงใน UI

  • protocolType

    สตริง

    คำอธิบายที่มนุษย์อ่านได้ของโปรโตคอลหรือไดรเวอร์ที่ใช้เพื่อเข้าถึงสแกนเนอร์ เช่น Mopria, WSD หรือ epsonds ซึ่งจะมีประโยชน์หลักๆ ในการอนุญาตให้ผู้ใช้เลือกระหว่างโปรโตคอลต่างๆ หากอุปกรณ์รองรับหลายโปรโตคอล

  • scannerId

    สตริง

    รหัสของสแกนเนอร์ที่เฉพาะเจาะจง

  • ปลอดภัย

    บูลีน

    หากเป็นจริง ผู้ฟังแบบพาสซีฟ เช่น TLS หรือ USB จะสกัดกั้นการรับส่งของการเชื่อมต่อสแกนเนอร์ไม่ได้

ScannerOption

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • ความสามารถในการกำหนดค่า

    ระบุว่าเปลี่ยนตัวเลือกได้หรือไม่และเปลี่ยนอย่างไร

  • ข้อจำกัด

    OptionConstraint ไม่บังคับ

    กำหนด OptionConstraint ในตัวเลือกเครื่องสแกนปัจจุบัน

  • คำอธิบาย

    สตริง

    คำอธิบายแบบยาวของตัวเลือก

  • isActive

    บูลีน

    ระบุว่าตัวเลือกใช้งานอยู่และตั้งค่าหรือดึงข้อมูลได้ หากเป็นเท็จ ระบบจะไม่ตั้งค่าพร็อพเพอร์ตี้ value

  • isAdvanced

    บูลีน

    ระบุว่า UI ไม่ควรแสดงตัวเลือกนี้โดยค่าเริ่มต้น

  • isAutoSettable

    บูลีน

    ไดรเวอร์เครื่องสแกนจะตั้งค่าโดยอัตโนมัติได้

  • isDetectable

    บูลีน

    ระบุว่าตรวจพบตัวเลือกนี้จากซอฟต์แวร์ได้

  • isEmulated

    บูลีน

    จำลองโดยไดรเวอร์เครื่องสแกนหากเป็นจริง

  • ชื่อ

    สตริง

    ชื่อตัวเลือกที่ใช้ตัวอักษร ASCII พิมพ์เล็ก ตัวเลข และขีดคั่น ไม่อนุญาตให้ใช้เครื่องหมายกำกับเสียง

  • title

    สตริง

    ชื่อแบบบรรทัดเดียวที่พิมพ์ได้

  • ประเภท

    ประเภทข้อมูลที่มีอยู่ในพร็อพเพอร์ตี้ value ซึ่งจำเป็นต่อการตั้งค่าตัวเลือกนี้

  • หน่วย

    หน่วยวัดสำหรับตัวเลือกนี้

  • value

    สตริง | ตัวเลข | บูลีน | หมายเลข[] ไม่บังคับ

    มูลค่าปัจจุบันของตัวเลือก หากเกี่ยวข้อง โปรดทราบว่าประเภทข้อมูลของพร็อพเพอร์ตี้นี้ต้องตรงกับประเภทข้อมูลที่ระบุใน type

ScanOptions

พร็อพเพอร์ตี้

  • maxImages

    หมายเลข ไม่บังคับ

    จำนวนรูปภาพที่สแกนที่อนุญาต ค่าเริ่มต้นคือ 1

  • mimeTypes

    string[] ไม่บังคับ

    ประเภท MIME ที่ผู้โทรยอมรับ

ScanResults

พร็อพเพอร์ตี้

  • dataUrls

    string[]

    อาร์เรย์ของ URL รูปภาพข้อมูลในรูปแบบที่ส่งเป็นค่า "src" ไปยังแท็กรูปภาพได้

  • mimeType

    สตริง

    ประเภท MIME ของ dataUrls

SetOptionResult

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • ชื่อ

    สตริง

    ระบุชื่อของตัวเลือกที่ตั้งค่าไว้

  • ผลลัพธ์

    ระบุผลลัพธ์ของการตั้งค่าตัวเลือก

SetOptionsResponse

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • ตัวเลือก

    object ไม่บังคับ

    การแมปคีย์-ค่าที่อัปเดตจากชื่อตัวเลือกไปยังค่า ScannerOption ที่มีการกำหนดค่าใหม่หลังจากพยายามตั้งค่าตัวเลือกทั้งหมดที่ระบุ ซึ่งมีโครงสร้างเดียวกับพร็อพเพอร์ตี้ options ใน OpenScannerResponse

    ระบบจะตั้งค่าพร็อพเพอร์ตี้นี้แม้ว่าจะตั้งค่าตัวเลือกบางอย่างไม่สำเร็จ แต่จะยกเลิกการตั้งค่าหากดึงข้อมูลการกำหนดค่าที่อัปเดตไม่สำเร็จ (เช่น หากสแกนเนอร์ถูกตัดการเชื่อมต่อกลางคัน)

  • ผลลัพธ์

    อาร์เรย์ของผลลัพธ์ โดยมีผลลัพธ์ 1 รายการสำหรับแต่ละ OptionSetting ที่ส่งผ่าน

  • scannerHandle

    สตริง

    ระบุแฮนเดิลของเครื่องสแกนที่ส่งไปยัง setOptions()

StartScanOptions

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • รูปแบบ

    สตริง

    ระบุประเภท MIME ที่จะแสดงข้อมูลที่สแกน

  • maxReadSize

    หมายเลข ไม่บังคับ

    หากระบุค่าที่ไม่ใช่ 0 จะจำกัดจำนวนไบต์สูงสุดที่สแกนซึ่งแสดงผลในการตอบกลับ readScanData รายการเดียวเป็นค่าดังกล่าว ค่าที่เล็กที่สุดที่อนุญาตคือ 32768 (32 KB) หากไม่ได้ระบุพร็อพเพอร์ตี้นี้ ขนาดของก้อนข้อมูลที่ส่งคืนอาจมีขนาดใหญ่เท่ากับรูปภาพที่สแกนทั้งหมด

StartScanResponse

Chrome 125 ขึ้นไป

พร็อพเพอร์ตี้

  • งาน

    สตริง ไม่บังคับ

    หาก result เป็น SUCCESS จะมีแฮนเดิลที่ใช้เพื่ออ่านข้อมูลการสแกนหรือยกเลิกงานได้

  • ผลลัพธ์

    ผลลัพธ์ของการเริ่มการสแกน หากค่านี้เป็น SUCCESS ระบบจะกรอกข้อมูลพร็อพเพอร์ตี้ job

  • scannerHandle

    สตริง

    ระบุแฮนเดิลของสแกนเนอร์เดียวกันกับที่ส่งไปยัง startScan()

เมธอด

cancelScan()

Chrome 125 ขึ้นไป
chrome.documentScan.cancelScan(
  job: string,
)
: Promise<CancelScanResponse>

ยกเลิกการสแกนที่เริ่มแล้วและส่งคืน Promise ที่จะแก้ไขด้วยออบเจ็กต์ CancelScanResponse หากใช้การเรียกกลับ ระบบจะส่งออบเจ็กต์ไปยังการเรียกกลับแทน

พารามิเตอร์

  • งาน

    สตริง

    แฮนเดิลของงานสแกนที่ใช้งานอยู่ซึ่งก่อนหน้านี้ส่งคืนจากการเรียกไปยัง startScan

การคืนสินค้า

closeScanner()

Chrome 125 ขึ้นไป
chrome.documentScan.closeScanner(
  scannerHandle: string,
)
: Promise<CloseScannerResponse>

ปิดเครื่องสแกนด้วยแฮนเดิลที่ส่งเข้ามาและแสดงผล Promise ที่จะแก้ไขด้วยออบเจ็กต์ CloseScannerResponse หากใช้การเรียกกลับ ระบบจะส่งออบเจ็กต์ไปยังการเรียกกลับแทน แม้ว่าการตอบกลับจะไม่สำเร็จ แต่แฮนเดิลที่ระบุจะใช้ไม่ได้และไม่ควรใช้สำหรับการดำเนินการเพิ่มเติม

พารามิเตอร์

  • scannerHandle

    สตริง

    ระบุแฮนเดิลของสแกนเนอร์ที่เปิดอยู่ซึ่งส่งคืนจากการเรียกใช้ openScanner ก่อนหน้านี้

การคืนสินค้า

getOptionGroups()

Chrome 125 ขึ้นไป
chrome.documentScan.getOptionGroups(
  scannerHandle: string,
)
: Promise<GetOptionGroupsResponse>

รับชื่อกลุ่มและตัวเลือกสมาชิกจากเครื่องสแกนที่ openScanner เปิดไว้ก่อนหน้านี้ เมธอดนี้จะแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ GetOptionGroupsResponse หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน

พารามิเตอร์

  • scannerHandle

    สตริง

    แฮนเดิลของเครื่องสแกนที่เปิดอยู่ซึ่งส่งคืนจากการเรียกใช้ openScanner

การคืนสินค้า

getScannerList()

Chrome 125 ขึ้นไป
chrome.documentScan.getScannerList(
  filter: DeviceFilter,
)
: Promise<GetScannerListResponse>

รับรายการสแกนเนอร์ที่พร้อมใช้งานและแสดงผล Promise ที่จะแก้ไขด้วยออบเจ็กต์ GetScannerListResponse หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน

พารามิเตอร์

  • ตัวกรอง

    DeviceFilter ที่ระบุประเภทของสแกนเนอร์ที่ควรแสดง

การคืนสินค้า

openScanner()

Chrome 125 ขึ้นไป
chrome.documentScan.openScanner(
  scannerId: string,
)
: Promise<OpenScannerResponse>

เปิดเครื่องสแกนเพื่อเข้าถึงแบบพิเศษและแสดงผล Promise ที่จะแก้ไขด้วยออบเจ็กต์ OpenScannerResponse หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน

พารามิเตอร์

  • scannerId

    สตริง

    รหัสของเครื่องสแกนที่จะเปิด ค่านี้เป็นค่าที่ส่งคืนจากการเรียก getScannerList ก่อนหน้านี้

การคืนสินค้า

readScanData()

Chrome 125 ขึ้นไป
chrome.documentScan.readScanData(
  job: string,
)
: Promise<ReadScanDataResponse>

อ่านก้อนข้อมูลรูปภาพถัดไปที่มีจากแฮนเดิลของงานที่ใช้งานอยู่ และส่งคืน Promise ที่จะเปลี่ยนเป็นออบเจ็กต์ ReadScanDataResponse หากใช้การเรียกกลับ ระบบจะส่งออบเจ็กต์ไปยังการเรียกกลับแทน

**หมายเหตุ:**ผลการตอบกลับอาจเป็น SUCCESS ที่มีสมาชิก data ที่มีความยาวเป็น 0 ซึ่งหมายความว่าเครื่องสแกนยังคงทำงานได้ แต่ยังไม่มีข้อมูลเพิ่มเติมพร้อมใช้งาน ผู้โทรควรรอสักครู่แล้วลองอีกครั้ง

เมื่องานสแกนเสร็จสมบูรณ์ คำตอบจะมีค่าผลลัพธ์เป็น EOF การตอบกลับนี้อาจมีสมาชิก data สุดท้ายที่ไม่ใช่ 0

พารามิเตอร์

  • งาน

    สตริง

    แฮนเดิลงานที่ใช้งานอยู่ซึ่งก่อนหน้านี้ส่งคืนจาก startScan

การคืนสินค้า

scan()

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

ทำการสแกนเอกสารและแสดงผล Promise ที่จะแก้ไขด้วยออบเจ็กต์ ScanResults หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน

พารามิเตอร์

  • ตัวเลือก

    ออบเจ็กต์ที่มีพารามิเตอร์การสแกน

การคืนสินค้า

setOptions()

Chrome 125 ขึ้นไป
chrome.documentScan.setOptions(
  scannerHandle: string,
  options: OptionSetting[],
)
: Promise<SetOptionsResponse>

ตั้งค่าตัวเลือกในสแกนเนอร์ที่ระบุและแสดงผล Promise ที่จะแก้ไขด้วยออบเจ็กต์ SetOptionsResponse ที่มีผลลัพธ์ของการพยายามตั้งค่าทุกค่าตามลำดับในออบเจ็กต์ OptionSetting ที่ส่งเข้ามา หากใช้การเรียกกลับ ระบบจะส่งออบเจ็กต์ไปยังการเรียกกลับแทน

พารามิเตอร์

  • scannerHandle

    สตริง

    แฮนเดิลของเครื่องสแกนเพื่อตั้งค่าตัวเลือก ค่านี้ควรเป็นค่าที่ส่งคืนก่อนหน้านี้จากการเรียกไปยัง openScanner

  • ตัวเลือก

    รายการออบเจ็กต์ OptionSetting ที่จะใช้กับสแกนเนอร์

การคืนสินค้า

startScan()

Chrome 125 ขึ้นไป
chrome.documentScan.startScan(
  scannerHandle: string,
  options: StartScanOptions,
)
: Promise<StartScanResponse>

เริ่มการสแกนในเครื่องสแกนที่ระบุและแสดงผล Promise ที่จะแก้ไขด้วย StartScanResponse หากใช้การเรียกกลับ ระบบจะส่งออบเจ็กต์ไปยังการเรียกกลับแทน หากการเรียกใช้สำเร็จ การตอบกลับจะมีแฮนเดิลของงานที่ใช้ในการเรียกใช้ครั้งต่อๆ ไปเพื่ออ่านข้อมูลการสแกนหรือยกเลิกการสแกนได้

พารามิเตอร์

  • scannerHandle

    สตริง

    แฮนเดิลของเครื่องสแกนที่เปิดอยู่ ค่านี้ควรเป็นค่าที่ส่งคืนก่อนหน้านี้จากการเรียกไปยัง openScanner

  • ตัวเลือก

    ออบเจ็กต์ StartScanOptions ที่ระบุตัวเลือกที่จะใช้สำหรับการสแกน พร็อพเพอร์ตี้ StartScanOptions.format ต้องตรงกับรายการใดรายการหนึ่งที่แสดงใน ScannerInfo ของสแกนเนอร์

การคืนสินค้า