คำอธิบาย
ใช้ chrome.documentScan
API เพื่อค้นหาและดึงรูปภาพจากเครื่องสแกนเอกสารที่แนบมา
Document Scan API ออกแบบมาเพื่อให้แอปและส่วนขยายดูเนื้อหาของเอกสารกระดาษในเครื่องสแกนเอกสารที่แนบมาได้
สิทธิ์
documentScan
ความพร้อมใช้งาน
แนวคิดและการใช้งาน
API นี้รองรับการสแกนเอกสาร 2 วิธี หากกรณีการใช้งานของคุณใช้ได้ กับเครื่องสแกนทุกเครื่องและไม่จำเป็นต้องควบคุมการกำหนดค่า ให้ใช้วิธีscan()
กรณีการใช้งานที่ซับซ้อนมากขึ้นต้องใช้วิธีการร่วมกัน ซึ่งรองรับเฉพาะใน Chrome 124 ขึ้นไป
การสแกนอย่างง่าย
สำหรับกรณีการใช้งานที่เรียบง่าย ซึ่งหมายถึงกรณีที่ใช้ได้กับเครื่องสแกนทุกเครื่องและไม่ ต้องมีการควบคุมการกำหนดค่า โปรดโทรหา scan()
เมธอดนี้รับออบเจ็กต์ ScanOptions
และแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ ScanResults
ความสามารถของตัวเลือกนี้จำกัดไว้ที่จำนวนการสแกนและ ประเภท MIME ที่ผู้โทรยอมรับ ระบบจะแสดงผลการสแกนเป็น URL เพื่อแสดงในแท็ก <img>
สำหรับอินเทอร์เฟซผู้ใช้
การสแกนที่ซับซ้อน
การสแกนที่ซับซ้อนจะดำเนินการใน 3 เฟสตามที่อธิบายไว้ในส่วนนี้ โครงร่างนี้ไม่ได้อธิบายอาร์กิวเมนต์ของเมธอดหรือพร็อพเพอร์ตี้ทุกรายการที่ส่งคืน ในการตอบกลับ โดยมีวัตถุประสงค์เพื่อให้คำแนะนำทั่วไปในการเขียนโค้ดสแกนเนอร์ เท่านั้น
Discovery
โทรหา
getScannerList()
ระบบจะแสดงเครื่องสแกนที่พร้อมใช้งานใน Promise ที่จะได้รับการแก้ไขด้วยGetScannerListResponse
- ออบเจ็กต์การตอบกลับมีอาร์เรย์ของออบเจ็กต์
ScannerInfo
- อาร์เรย์อาจมีรายการหลายรายการสำหรับสแกนเนอร์เครื่องเดียว หากสแกนเนอร์นั้นรองรับหลายโปรโตคอลหรือวิธีการเชื่อมต่อ
- ออบเจ็กต์การตอบกลับมีอาร์เรย์ของออบเจ็กต์
เลือกสแกนเนอร์จากอาร์เรย์ที่ส่งคืนและบันทึกค่าของพร็อพเพอร์ตี้
scannerId
ใช้พร็อพเพอร์ตี้ของออบเจ็กต์
ScannerInfo
แต่ละรายการ เพื่อแยกความแตกต่างระหว่างออบเจ็กต์หลายรายการสำหรับสแกนเนอร์เดียวกัน ออบเจ็กต์จาก สแกนเนอร์เดียวกันจะมีค่าเดียวกันสำหรับพร็อพเพอร์ตี้deviceUuid
ScannerInfo
ยังมีพร็อพเพอร์ตี้imageFormats
ที่มีอาร์เรย์ของประเภทรูปภาพที่รองรับด้วย
การกำหนดค่าเครื่องสแกน
เรียกใช้
openScanner()
โดยส่งรหัสเครื่องสแกนที่บันทึกไว้ โดยจะแสดงผล Promise ที่แก้ไขด้วยOpenScannerResponse
ออบเจ็กต์การตอบกลับประกอบด้วยข้อมูลต่อไปนี้พร็อพเพอร์ตี้
scannerHandle
ซึ่งคุณจะต้องบันทึกพร็อพเพอร์ตี้ตัวเลือกที่มีพร็อพเพอร์ตี้เฉพาะสแกนเนอร์ ซึ่งคุณจะต้องตั้งค่า ดูข้อมูลเพิ่มเติมได้ที่หัวข้อเรียกตัวเลือกสแกนเนอร์
(ไม่บังคับ) หากต้องการให้ผู้ใช้ระบุค่าสำหรับตัวเลือกสแกนเนอร์ ให้สร้างอินเทอร์เฟซผู้ใช้ คุณจะต้องใช้ตัวเลือกเครื่องสแกนที่ได้รับจาก ขั้นตอนก่อนหน้า และจะต้องดึงกลุ่มตัวเลือกที่ได้รับจาก เครื่องสแกน ดูข้อมูลเพิ่มเติมได้ที่สร้างอินเทอร์เฟซผู้ใช้
สร้างอาร์เรย์ของออบเจ็กต์
OptionSetting
โดยใช้ค่าที่ได้จากโปรแกรมหรือค่าที่ผู้ใช้ระบุ ดูข้อมูลเพิ่มเติมได้ที่ตั้งค่าตัวเลือกสแกนเนอร์ส่งอาร์เรย์ของออบเจ็กต์
OptionSetting
ไปยังsetOptions()
เพื่อตั้งค่าตัวเลือกสำหรับเครื่องสแกน โดยจะ แสดงผล Promise ที่แก้ไขด้วยSetOptionsResponse
ออบเจ็กต์นี้มีตัวเลือกเครื่องสแกนเวอร์ชันที่อัปเดตแล้วซึ่งดึงข้อมูลมาในขั้นตอนที่ 1 ของการกำหนดค่าเครื่องสแกนเนื่องจากการเปลี่ยนตัวเลือกหนึ่งอาจส่งผลต่อข้อจำกัดของอีกตัวเลือกหนึ่ง คุณอาจต้องทำตามขั้นตอนเหล่านี้ซ้ำหลายครั้ง
กำลังสแกน
สร้างออบเจ็กต์
StartScanOptions
แล้วส่งไปยังstartScan()
โดยจะแสดงผล Promise ที่แก้ไข ด้วยStartScanResponse
job
พร็อพเพอร์ตี้ของออบเจ็กต์นี้ คือแฮนเดิลที่คุณจะใช้เพื่ออ่านข้อมูลการสแกนหรือยกเลิกการสแกนส่งแฮนเดิลของงานให้
readScanData()
โดยจะส่งคืน Promise ที่จะแสดงผลออบเจ็กต์ReadScanDataResponse
หากอ่านข้อมูลสำเร็จ พร็อพเพอร์ตี้result
จะเท่ากับSUCCESS
และพร็อพเพอร์ตี้data
จะมีArrayBuffer
ที่มีส่วนหนึ่งของการสแกน โปรดทราบว่าestimatedCompletion
มีเปอร์เซ็นต์โดยประมาณ ของข้อมูลทั้งหมดที่ส่งแล้วจนถึงตอนนี้ทำขั้นตอนก่อนหน้าซ้ำจนกว่าพร็อพเพอร์ตี้
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
พร็อพเพอร์ตี้
- งาน
สตริง
ระบุแฮนเดิลงานเดียวกันกับที่ส่งไปยัง
cancelScan()
- ผลลัพธ์
ผลการยกเลิกการสแกนของแบ็กเอนด์ หากผลลัพธ์เป็น
OperationResult.SUCCESS
หรือOperationResult.CANCELLED
แสดงว่าระบบยกเลิกการสแกนแล้ว และสแกนเนอร์พร้อมที่จะเริ่มการสแกนใหม่ หากผลลัพธ์เป็นOperationResult.DEVICE_BUSY
แสดงว่าเครื่องสแกนยังคงประมวลผลการยกเลิกที่ขออยู่ ผู้โทรควรรอสักครู่แล้วลองส่งคำขออีกครั้ง ค่าผลลัพธ์อื่นๆ แสดงข้อผิดพลาดถาวรที่ไม่ควรลองอีก
CloseScannerResponse
พร็อพเพอร์ตี้
- ผลลัพธ์
ผลลัพธ์ของการปิดเครื่องสแกน แม้ว่าค่านี้จะไม่ใช่
SUCCESS
แต่แฮนเดิลจะใช้ไม่ได้และไม่ควรนำไปใช้ในการดำเนินการใดๆ เพิ่มเติม - scannerHandle
สตริง
แฮนเดิลของเครื่องสแกนเดียวกันกับที่ส่งไปยัง
closeScanner
Configurability
วิธีเปลี่ยนตัวเลือก
ค่าแจกแจง
"NOT_CONFIGURABLE"
ตัวเลือกเป็นแบบอ่านอย่างเดียว
"SOFTWARE_CONFIGURABLE"
ตั้งค่าตัวเลือกในซอฟต์แวร์ได้
"HARDWARE_CONFIGURABLE"
ผู้ใช้สามารถตั้งค่าตัวเลือกได้โดยการเปิด/ปิดหรือกดปุ่มบนสแกนเนอร์
ConnectionType
ระบุวิธีเชื่อมต่อสแกนเนอร์กับคอมพิวเตอร์
ค่าแจกแจง
"UNSPECIFIED"
"USB"
"NETWORK"
ค่าแจกแจง
"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
พร็อพเพอร์ตี้
- local
บูลีน ไม่บังคับ
ส่งคืนเฉพาะสแกนเนอร์ที่เชื่อมต่อกับคอมพิวเตอร์โดยตรง
- ปลอดภัย
บูลีน ไม่บังคับ
แสดงเฉพาะสแกนเนอร์ที่ใช้การส่งที่ปลอดภัย เช่น USB หรือ TLS
GetOptionGroupsResponse
พร็อพเพอร์ตี้
- กลุ่ม
OptionGroup[] ไม่บังคับ
หาก
result
เป็นSUCCESS
จะแสดงรายการกลุ่มตัวเลือกตามลำดับที่ไดรเวอร์เครื่องสแกนระบุ - ผลลัพธ์
ผลลัพธ์ของการรับกลุ่มตัวเลือก หากค่านี้เป็น
SUCCESS
ระบบจะกรอกข้อมูลพร็อพเพอร์ตี้groups
- scannerHandle
สตริง
แฮนเดิลของเครื่องสแกนเดียวกันกับที่ส่งไปยัง
getOptionGroups
GetScannerListResponse
พร็อพเพอร์ตี้
- ผลลัพธ์
ผลการแจงนับ โปรดทราบว่าระบบอาจแสดงผลลัพธ์บางส่วนแม้ว่าการดำเนินการนี้จะระบุข้อผิดพลาดก็ตาม
- สแกนเนอร์
รายการเครื่องสแกนที่อาจว่างเปล่าซึ่งตรงกับ
DeviceFilter
ที่ระบุ
OpenScannerResponse
พร็อพเพอร์ตี้
- ตัวเลือก
object ไม่บังคับ
หาก
result
เป็นSUCCESS
ให้ระบุการแมปคีย์-ค่าโดยที่คีย์เป็นตัวเลือกเฉพาะอุปกรณ์ และค่าเป็นอินสแตนซ์ของScannerOption
- ผลลัพธ์
ผลลัพธ์ของการเปิดเครื่องสแกน หากค่านี้เป็น
SUCCESS
ระบบจะกรอกข้อมูลพร็อพเพอร์ตี้scannerHandle
และoptions
- scannerHandle
สตริง ไม่บังคับ
หาก
result
เป็นSUCCESS
จะเป็นแฮนเดิลของเครื่องสแกนที่ใช้สำหรับการดำเนินการเพิ่มเติมได้ - scannerId
สตริง
รหัสเครื่องสแกนที่ส่งไปยัง
openScanner()
OperationResult
การแจงนับที่ระบุผลลัพธ์ของการดำเนินการแต่ละอย่าง
ค่าแจกแจง
"ไม่ทราบ"
เกิดข้อผิดพลาดที่ไม่รู้จักหรือทั่วไป
"SUCCESS"
การดำเนินการสำเร็จ
"ไม่รองรับ"
ไม่รองรับการดำเนินการนี้
"ยกเลิกแล้ว"
การดำเนินการถูกยกเลิก
"DEVICE_BUSY"
อุปกรณ์ยังไม่ว่าง
"ไม่ถูกต้อง"
ข้อมูลหรืออาร์กิวเมนต์ที่ส่งไปยังเมธอดไม่ถูกต้อง
"WRONG_TYPE"
ค่าที่ระบุมีประเภทข้อมูลที่ไม่ถูกต้องสำหรับตัวเลือกพื้นฐาน
"EOF"
ไม่มีข้อมูลเพิ่มเติม
"ADF_JAMMED"
ตัวป้อนเอกสารมีกระดาษติด
"ADF_EMPTY"
ไม่มีเอกสารในตัวป้อนเอกสาร
"COVER_OPEN"
ฝาของเครื่องสแกนแบบแท่นเปิดอยู่
"IO_ERROR"
เกิดข้อผิดพลาดขณะสื่อสารกับอุปกรณ์
"ACCESS_DENIED"
อุปกรณ์ต้องมีการตรวจสอบสิทธิ์
"NO_MEMORY"
Chromebook มีหน่วยความจำไม่เพียงพอที่จะดำเนินการให้เสร็จสมบูรณ์
"เข้าถึงไม่ได้"
เข้าถึงอุปกรณ์ไม่ได้
"สูญหาย"
อุปกรณ์ไม่ได้เชื่อมต่ออยู่
"INTERNAL_ERROR"
เกิดข้อผิดพลาดที่อื่นนอกเหนือจากแอปพลิเคชันที่เรียกใช้
OptionConstraint
พร็อพเพอร์ตี้
- list
string[] | number[] ไม่บังคับ
- สูงสุด
หมายเลข ไม่บังคับ
- นาที
หมายเลข ไม่บังคับ
- quant
หมายเลข ไม่บังคับ
- ประเภท
OptionGroup
พร็อพเพอร์ตี้
- สมาชิก
string[]
อาร์เรย์ของชื่อตัวเลือกตามลำดับที่ผู้ขับระบุ
- title
สตริง
ระบุชื่อที่พิมพ์ได้ เช่น "ตัวเลือกเรขาคณิต"
OptionSetting
พร็อพเพอร์ตี้
- ชื่อ
สตริง
ระบุชื่อของตัวเลือกที่จะตั้งค่า
- ประเภท
ระบุประเภทข้อมูลของตัวเลือก ประเภทข้อมูลที่ขอต้องตรงกับประเภทข้อมูลจริงของตัวเลือกพื้นฐาน
- value
สตริง | ตัวเลข | บูลีน | หมายเลข[] ไม่บังคับ
ระบุค่าที่จะตั้ง ปล่อยว่างไว้เพื่อขอการตั้งค่าอัตโนมัติสำหรับตัวเลือกที่
autoSettable
เปิดใช้ ประเภทข้อมูลที่ระบุสำหรับvalue
ต้องตรงกับtype
OptionType
ประเภทข้อมูลของตัวเลือก
ค่าแจกแจง
"ไม่ทราบ"
ไม่ทราบประเภทข้อมูลของตัวเลือก ระบบจะยกเลิกการตั้งค่าพร็อพเพอร์ตี้ value
"BOOL"
พร็อพเพอร์ตี้ value
จะเป็นค่าใดค่าหนึ่งระหว่าง true
false
"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()
เพื่อดึงข้อมูลรายการกลุ่มพร้อมตัวเลือกสมาชิก
ค่าแจกแจง
"UNITLESS"
ค่าเป็นตัวเลขที่ไม่มีหน่วย เช่น อาจเป็นเกณฑ์
"PIXEL"
ค่าคือจำนวนพิกเซล เช่น ขนาดการสแกน
"BIT"
ค่าคือจำนวนบิต เช่น ความลึกของสี
"มม."
ค่าจะวัดเป็นมิลลิเมตร เช่น ขนาดการสแกน
"DPI"
ค่าจะวัดเป็นจุดต่อนิ้ว เช่น ความละเอียด
"PERCENT"
ค่าเป็นเปอร์เซ็นต์ เช่น ความสว่าง
"MICROSECOND"
ค่าจะวัดเป็นไมโครวินาที เช่น เวลาเปิดรับแสง
ReadScanDataResponse
พร็อพเพอร์ตี้
- เพิ่มเติม
ArrayBuffer ไม่บังคับ
หาก
result
เป็นSUCCESS
จะมีข้อมูลรูปภาพที่สแกนแล้วถัดไป หากresult
เป็นEOF
จะมีข้อมูลรูปภาพที่สแกนสุดท้าย - estimatedCompletion
หมายเลข ไม่บังคับ
หาก
result
เป็นSUCCESS
ค่าประมาณของข้อมูลการสแกนทั้งหมดที่ส่งแล้วจนถึงตอนนี้ในช่วง 0 ถึง 100 - งาน
สตริง
ระบุแฮนเดิลของงานที่ส่งไปยัง
readScanData()
- ผลลัพธ์
ผลลัพธ์ของการอ่านข้อมูล หากค่าเป็น
SUCCESS
แสดงว่าdata
มีข้อมูลรูปภาพส่วน next (อาจมีความยาวเป็น 0) ที่พร้อมอ่าน หากมีค่าเป็นEOF
data
จะมีข้อมูลรูปภาพส่วนสุดท้าย
ScannerInfo
พร็อพเพอร์ตี้
- connectionType
ระบุวิธีเชื่อมต่อสแกนเนอร์กับคอมพิวเตอร์
- deviceUuid
สตริง
สำหรับการจับคู่กับรายการ
ScannerInfo
อื่นๆ ที่ชี้ไปยังอุปกรณ์จริงเดียวกัน - imageFormats
string[]
อาร์เรย์ของประเภท MIME ที่ขอได้สำหรับการสแกนที่ส่งคืน
- ผู้ผลิต
สตริง
ผู้ผลิตเครื่องสแกน
- รุ่น
สตริง
รุ่นของสแกนเนอร์ (หากมี) หรือคำอธิบายทั่วไป
- ชื่อ
สตริง
ชื่อที่มนุษย์อ่านได้สำหรับเครื่องสแกนเพื่อแสดงใน UI
- protocolType
สตริง
คำอธิบายที่มนุษย์อ่านได้ของโปรโตคอลหรือไดรเวอร์ที่ใช้เพื่อเข้าถึงสแกนเนอร์ เช่น Mopria, WSD หรือ epsonds ซึ่งจะมีประโยชน์หลักๆ ในการอนุญาตให้ผู้ใช้เลือกระหว่างโปรโตคอลต่างๆ หากอุปกรณ์รองรับหลายโปรโตคอล
- scannerId
สตริง
รหัสของสแกนเนอร์ที่เฉพาะเจาะจง
- ปลอดภัย
บูลีน
หากเป็นจริง ผู้ฟังแบบพาสซีฟ เช่น TLS หรือ USB จะสกัดกั้นการรับส่งของการเชื่อมต่อสแกนเนอร์ไม่ได้
ScannerOption
พร็อพเพอร์ตี้
- ความสามารถในการกำหนดค่า
ระบุว่าเปลี่ยนตัวเลือกได้หรือไม่และเปลี่ยนอย่างไร
- ข้อจำกัด
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
พร็อพเพอร์ตี้
- ชื่อ
สตริง
ระบุชื่อของตัวเลือกที่ตั้งค่าไว้
- ผลลัพธ์
ระบุผลลัพธ์ของการตั้งค่าตัวเลือก
SetOptionsResponse
พร็อพเพอร์ตี้
- ตัวเลือก
object ไม่บังคับ
การแมปคีย์-ค่าที่อัปเดตจากชื่อตัวเลือกไปยังค่า
ScannerOption
ที่มีการกำหนดค่าใหม่หลังจากพยายามตั้งค่าตัวเลือกทั้งหมดที่ระบุ ซึ่งมีโครงสร้างเดียวกับพร็อพเพอร์ตี้options
ในOpenScannerResponse
ระบบจะตั้งค่าพร็อพเพอร์ตี้นี้แม้ว่าจะตั้งค่าตัวเลือกบางอย่างไม่สำเร็จ แต่จะยกเลิกการตั้งค่าหากดึงข้อมูลการกำหนดค่าที่อัปเดตไม่สำเร็จ (เช่น หากสแกนเนอร์ถูกตัดการเชื่อมต่อกลางคัน)
- ผลลัพธ์
อาร์เรย์ของผลลัพธ์ โดยมีผลลัพธ์ 1 รายการสำหรับแต่ละ
OptionSetting
ที่ส่งผ่าน - scannerHandle
สตริง
ระบุแฮนเดิลของเครื่องสแกนที่ส่งไปยัง
setOptions()
StartScanOptions
พร็อพเพอร์ตี้
- รูปแบบ
สตริง
ระบุประเภท MIME ที่จะแสดงข้อมูลที่สแกน
- maxReadSize
หมายเลข ไม่บังคับ
หากระบุค่าที่ไม่ใช่ 0 จะจำกัดจำนวนไบต์สูงสุดที่สแกนซึ่งแสดงผลในการตอบกลับ
readScanData
รายการเดียวเป็นค่าดังกล่าว ค่าที่เล็กที่สุดที่อนุญาตคือ 32768 (32 KB) หากไม่ได้ระบุพร็อพเพอร์ตี้นี้ ขนาดของก้อนข้อมูลที่ส่งคืนอาจมีขนาดใหญ่เท่ากับรูปภาพที่สแกนทั้งหมด
StartScanResponse
พร็อพเพอร์ตี้
- งาน
สตริง ไม่บังคับ
หาก
result
เป็นSUCCESS
จะมีแฮนเดิลที่ใช้เพื่ออ่านข้อมูลการสแกนหรือยกเลิกงานได้ - ผลลัพธ์
ผลลัพธ์ของการเริ่มการสแกน หากค่านี้เป็น
SUCCESS
ระบบจะกรอกข้อมูลพร็อพเพอร์ตี้job
- scannerHandle
สตริง
ระบุแฮนเดิลของสแกนเนอร์เดียวกันกับที่ส่งไปยัง
startScan()
เมธอด
cancelScan()
chrome.documentScan.cancelScan(
job: string,
): Promise<CancelScanResponse>
ยกเลิกการสแกนที่เริ่มแล้วและส่งคืน Promise ที่จะแก้ไขด้วยออบเจ็กต์ CancelScanResponse
หากใช้การเรียกกลับ ระบบจะส่งออบเจ็กต์ไปยังการเรียกกลับแทน
พารามิเตอร์
- งาน
สตริง
แฮนเดิลของงานสแกนที่ใช้งานอยู่ซึ่งก่อนหน้านี้ส่งคืนจากการเรียกไปยัง
startScan
การคืนสินค้า
-
Promise<CancelScanResponse>
closeScanner()
chrome.documentScan.closeScanner(
scannerHandle: string,
): Promise<CloseScannerResponse>
ปิดเครื่องสแกนด้วยแฮนเดิลที่ส่งเข้ามาและแสดงผล Promise ที่จะแก้ไขด้วยออบเจ็กต์ CloseScannerResponse
หากใช้การเรียกกลับ ระบบจะส่งออบเจ็กต์ไปยังการเรียกกลับแทน แม้ว่าการตอบกลับจะไม่สำเร็จ แต่แฮนเดิลที่ระบุจะใช้ไม่ได้และไม่ควรใช้สำหรับการดำเนินการเพิ่มเติม
พารามิเตอร์
- scannerHandle
สตริง
ระบุแฮนเดิลของสแกนเนอร์ที่เปิดอยู่ซึ่งส่งคืนจากการเรียกใช้
openScanner
ก่อนหน้านี้
การคืนสินค้า
-
Promise<CloseScannerResponse>
getOptionGroups()
chrome.documentScan.getOptionGroups(
scannerHandle: string,
): Promise<GetOptionGroupsResponse>
รับชื่อกลุ่มและตัวเลือกสมาชิกจากเครื่องสแกนที่ openScanner
เปิดไว้ก่อนหน้านี้ เมธอดนี้จะแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ GetOptionGroupsResponse
หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน
พารามิเตอร์
- scannerHandle
สตริง
แฮนเดิลของเครื่องสแกนที่เปิดอยู่ซึ่งส่งคืนจากการเรียกใช้
openScanner
การคืนสินค้า
-
Promise<GetOptionGroupsResponse>
getScannerList()
chrome.documentScan.getScannerList(
filter: DeviceFilter,
): Promise<GetScannerListResponse>
รับรายการสแกนเนอร์ที่พร้อมใช้งานและแสดงผล Promise ที่จะแก้ไขด้วยออบเจ็กต์ GetScannerListResponse
หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน
พารามิเตอร์
- ตัวกรอง
DeviceFilter
ที่ระบุประเภทของสแกนเนอร์ที่ควรแสดง
การคืนสินค้า
-
Promise<GetScannerListResponse>
openScanner()
chrome.documentScan.openScanner(
scannerId: string,
): Promise<OpenScannerResponse>
เปิดเครื่องสแกนเพื่อเข้าถึงแบบพิเศษและแสดงผล Promise ที่จะแก้ไขด้วยออบเจ็กต์ OpenScannerResponse
หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน
พารามิเตอร์
- scannerId
สตริง
รหัสของเครื่องสแกนที่จะเปิด ค่านี้เป็นค่าที่ส่งคืนจากการเรียก
getScannerList
ก่อนหน้านี้
การคืนสินค้า
-
Promise<OpenScannerResponse>
readScanData()
chrome.documentScan.readScanData(
job: string,
): Promise<ReadScanDataResponse>
อ่านก้อนข้อมูลรูปภาพถัดไปที่มีจากแฮนเดิลของงานที่ใช้งานอยู่ และส่งคืน Promise ที่จะเปลี่ยนเป็นออบเจ็กต์ ReadScanDataResponse
หากใช้การเรียกกลับ ระบบจะส่งออบเจ็กต์ไปยังการเรียกกลับแทน
**หมายเหตุ:**ผลการตอบกลับอาจเป็น SUCCESS
ที่มีสมาชิก data
ที่มีความยาวเป็น 0 ซึ่งหมายความว่าเครื่องสแกนยังคงทำงานได้ แต่ยังไม่มีข้อมูลเพิ่มเติมพร้อมใช้งาน ผู้โทรควรรอสักครู่แล้วลองอีกครั้ง
เมื่องานสแกนเสร็จสมบูรณ์ คำตอบจะมีค่าผลลัพธ์เป็น EOF
การตอบกลับนี้อาจมีสมาชิก data
สุดท้ายที่ไม่ใช่ 0
พารามิเตอร์
- งาน
สตริง
แฮนเดิลงานที่ใช้งานอยู่ซึ่งก่อนหน้านี้ส่งคืนจาก
startScan
การคืนสินค้า
-
Promise<ReadScanDataResponse>
scan()
chrome.documentScan.scan(
options: ScanOptions,
): Promise<ScanResults>
ทำการสแกนเอกสารและแสดงผล Promise ที่จะแก้ไขด้วยออบเจ็กต์ ScanResults
หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน
พารามิเตอร์
- ตัวเลือก
ออบเจ็กต์ที่มีพารามิเตอร์การสแกน
การคืนสินค้า
-
Promise<ScanResults>
Chrome 96 ขึ้นไป
setOptions()
chrome.documentScan.setOptions(
scannerHandle: string,
options: OptionSetting[],
): Promise<SetOptionsResponse>
ตั้งค่าตัวเลือกในสแกนเนอร์ที่ระบุและแสดงผล Promise ที่จะแก้ไขด้วยออบเจ็กต์ SetOptionsResponse
ที่มีผลลัพธ์ของการพยายามตั้งค่าทุกค่าตามลำดับในออบเจ็กต์ OptionSetting
ที่ส่งเข้ามา หากใช้การเรียกกลับ ระบบจะส่งออบเจ็กต์ไปยังการเรียกกลับแทน
พารามิเตอร์
- scannerHandle
สตริง
แฮนเดิลของเครื่องสแกนเพื่อตั้งค่าตัวเลือก ค่านี้ควรเป็นค่าที่ส่งคืนก่อนหน้านี้จากการเรียกไปยัง
openScanner
- ตัวเลือก
รายการออบเจ็กต์
OptionSetting
ที่จะใช้กับสแกนเนอร์
การคืนสินค้า
-
Promise<SetOptionsResponse>
startScan()
chrome.documentScan.startScan(
scannerHandle: string,
options: StartScanOptions,
): Promise<StartScanResponse>
เริ่มการสแกนในเครื่องสแกนที่ระบุและแสดงผล Promise ที่จะแก้ไขด้วย StartScanResponse
หากใช้การเรียกกลับ ระบบจะส่งออบเจ็กต์ไปยังการเรียกกลับแทน หากการเรียกใช้สำเร็จ การตอบกลับจะมีแฮนเดิลของงานที่ใช้ในการเรียกใช้ครั้งต่อๆ ไปเพื่ออ่านข้อมูลการสแกนหรือยกเลิกการสแกนได้
พารามิเตอร์
- scannerHandle
สตริง
แฮนเดิลของเครื่องสแกนที่เปิดอยู่ ค่านี้ควรเป็นค่าที่ส่งคืนก่อนหน้านี้จากการเรียกไปยัง
openScanner
- ตัวเลือก
ออบเจ็กต์
StartScanOptions
ที่ระบุตัวเลือกที่จะใช้สำหรับการสแกน พร็อพเพอร์ตี้StartScanOptions.format
ต้องตรงกับรายการใดรายการหนึ่งที่แสดงในScannerInfo
ของสแกนเนอร์
การคืนสินค้า
-
Promise<StartScanResponse>