คำอธิบาย
ใช้ 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แต่ละรายการเพื่อแยกความแตกต่างระหว่างออบเจ็กต์หลายรายการสำหรับเครื่องสแกนเดียวกัน ออบเจ็กต์จากเครื่องสแกนเดียวกันจะมีค่าเดียวกันสำหรับพร็อพเพอร์ตี้deviceUuidScannerInfoยังมีพร็อพเพอร์ตี้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 }
}
ตัวอย่างเช่น ลองนึกภาพเครื่องสแกนที่แสดงตัวเลือกชื่อ "แหล่งที่มา" และ "ความละเอียด" โครงสร้างของออบเจ็กต์ 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 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" });
}
สแกนหน้าขนาด Letter 1 หน้า
ตัวอย่างนี้แสดงวิธีเลือกสแกนเนอร์ ตั้งค่าตัวเลือก และเปิดสแกนเนอร์ จากนั้นจะดึงเนื้อหาของหน้าเว็บหน้าเดียวและปิดสแกนเนอร์ กระบวนการนี้สาธิตการใช้ 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
พร็อพเพอร์ตี้
-
งาน
สตริง
ระบุแฮนเดิลงานเดียวกันกับที่ส่งไปยัง
cancelScan() -
ผลลัพธ์
ผลการสแกนการยกเลิกของแบ็กเอนด์ หากผลลัพธ์เป็น
OperationResult.SUCCESSหรือOperationResult.CANCELLEDแสดงว่าการสแกนถูกยกเลิกและเครื่องสแกนพร้อมที่จะเริ่มการสแกนใหม่แล้ว หากผลลัพธ์เป็นOperationResult.DEVICE_BUSYแสดงว่าเครื่องสแกนยังคงประมวลผลการยกเลิกที่ขออยู่ ผู้โทรควรรอสักครู่แล้วลองส่งคำขออีกครั้ง ค่าผลลัพธ์อื่นๆ บ่งชี้ถึงข้อผิดพลาดถาวรที่ไม่ควรลองใหม่
CloseScannerResponse
พร็อพเพอร์ตี้
-
ผลลัพธ์
ผลลัพธ์ของการปิดเครื่องสแกน แม้ว่าค่านี้จะไม่ใช่
SUCCESSแต่แฮนเดิลจะไม่ถูกต้องและไม่ควรใช้สำหรับการดำเนินการใดๆ เพิ่มเติม -
scannerHandle
สตริง
แฮนเดิลเครื่องสแกนเดียวกับที่ส่งไปยัง
closeScanner
Configurability
วิธีเปลี่ยนตัวเลือก
ค่าแจกแจง
"NOT_CONFIGURABLE"
ตัวเลือกเป็นแบบอ่านอย่างเดียว
"SOFTWARE_CONFIGURABLE"
ตั้งค่าตัวเลือกได้ในซอฟต์แวร์
"HARDWARE_CONFIGURABLE"
ผู้ใช้สามารถตั้งค่าตัวเลือกได้โดยการสลับหรือกดปุ่มบนเครื่องสแกน
ConnectionType
ระบุวิธีเชื่อมต่อเครื่องสแกนกับคอมพิวเตอร์
ค่าแจกแจง
"UNSPECIFIED"
"USB"
"NETWORK"
ConstraintType
ประเภทข้อมูลของข้อจำกัดที่แสดงโดย 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
พร็อพเพอร์ตี้
-
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
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"
เข้าถึงอุปกรณ์ไม่ได้
"ไม่พบ"
อุปกรณ์ไม่ได้เชื่อมต่ออยู่
"INTERNAL_ERROR"
เกิดข้อผิดพลาดที่อื่นนอกเหนือจากแอปพลิเคชันที่เรียกใช้
OptionConstraint
พร็อพเพอร์ตี้
-
list
string[] | number[] ไม่บังคับ
-
สูงสุด
number ไม่บังคับ
-
นาที
number ไม่บังคับ
-
quant
number ไม่บังคับ
-
ประเภท
OptionGroup
พร็อพเพอร์ตี้
-
สมาชิก
string[]
อาร์เรย์ของชื่อตัวเลือกตามลำดับที่คนขับระบุ
-
title
สตริง
ระบุชื่อที่พิมพ์ได้ เช่น "ตัวเลือกเรขาคณิต"
OptionSetting
พร็อพเพอร์ตี้
-
name
สตริง
ระบุชื่อของตัวเลือกที่จะตั้งค่า
-
ประเภท
ระบุประเภทข้อมูลของตัวเลือก ประเภทข้อมูลที่ขอต้องตรงกับประเภทข้อมูลจริงของตัวเลือกที่เกี่ยวข้อง
-
value
string | number | boolean | number[] ไม่บังคับ
ระบุค่าที่จะตั้ง ปล่อยให้เป็น "ไม่ได้ตั้งค่า" เพื่อขอการตั้งค่าอัตโนมัติสำหรับตัวเลือกที่เปิดใช้
autoSettableไว้ ประเภทข้อมูลที่ระบุสำหรับvalueต้องตรงกับtype
OptionType
ประเภทข้อมูลของตัวเลือก
ค่าแจกแจง
"UNKNOWN"
ไม่ทราบประเภทข้อมูลของตัวเลือก ระบบจะยกเลิกการตั้งค่าพร็อพเพอร์ตี้ 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
ระบุประเภทข้อมูลสำหรับ ScannerOption.unit
ค่าแจกแจง
"UNITLESS"
ค่าเป็นตัวเลขที่ไม่มีหน่วย เช่น เกณฑ์
"PIXEL"
ค่าเป็นจำนวนพิกเซล เช่น ขนาดการสแกน
"BIT"
ค่าคือจำนวนบิต เช่น ความลึกของสี
"MM"
ค่าจะวัดเป็นมิลลิเมตร เช่น ขนาดการสแกน
"DPI"
ค่าที่วัดเป็นจุดต่อนิ้ว เช่น ความละเอียด
"PERCENT"
ค่าเป็นเปอร์เซ็นต์ เช่น ความสว่าง
"MICROSECOND"
ค่าจะวัดเป็นไมโครวินาที เช่น เวลาในการรับแสง
ReadScanDataResponse
พร็อพเพอร์ตี้
-
เพิ่มเติม
ArrayBuffer ไม่บังคับ
หาก
resultเป็นSUCCESSจะมีข้อมูลรูปภาพที่สแกนส่วนถัดไป หากresultเป็นEOFจะมีข้อมูลรูปภาพที่สแกนส่วนสุดท้าย -
estimatedCompletion
number ไม่บังคับ
หาก
resultเป็นSUCCESSค่าประมาณของปริมาณข้อมูลการสแกนทั้งหมดที่ส่งไปแล้วจนถึงตอนนี้จะอยู่ในช่วง 0 ถึง 100 -
งาน
สตริง
ระบุแฮนเดิลของงานที่ส่งไปยัง
readScanData() -
ผลลัพธ์
ผลลัพธ์ของการอ่านข้อมูล หากค่าเป็น
SUCCESSแสดงว่าdataมีข้อมูลรูปภาพส่วนถัดไป (อาจมีความยาวเป็น 0) ที่พร้อมให้อ่าน หากค่าเป็นEOFแสดงว่าdataมีข้อมูลรูปภาพส่วนสุดท้าย
ScannerInfo
พร็อพเพอร์ตี้
-
connectionType
ระบุวิธีเชื่อมต่อเครื่องสแกนกับคอมพิวเตอร์
-
deviceUuid
สตริง
สำหรับการจับคู่กับรายการ
ScannerInfoอื่นๆ ที่ชี้ไปยังอุปกรณ์จริงเครื่องเดียวกัน -
imageFormats
string[]
อาร์เรย์ของประเภท MIME ที่สามารถขอสำหรับการสแกนที่แสดงผล
-
ผู้ผลิต
สตริง
ผู้ผลิตเครื่องสแกน
-
รุ่น
สตริง
รุ่นของเครื่องสแกน (หากมี) หรือคำอธิบายทั่วไป
-
name
สตริง
ชื่อเครื่องสแกนที่มนุษย์อ่านได้เพื่อแสดงใน UI
-
protocolType
สตริง
คำอธิบายที่มนุษย์อ่านได้ของโปรโตคอลหรือไดรเวอร์ที่ใช้เข้าถึงสแกนเนอร์ เช่น Mopria, WSD หรือ epsonds ซึ่งมีประโยชน์อย่างยิ่งในการอนุญาตให้ผู้ใช้เลือกโปรโตคอลได้หากอุปกรณ์รองรับหลายโปรโตคอล
-
scannerId
สตริง
รหัสของเครื่องสแกนที่เฉพาะเจาะจง
-
ปลอดภัย
บูลีน
หากเป็นจริง การรับส่งข้อมูลของการเชื่อมต่อเครื่องสแกนจะไม่สามารถถูกดักฟังโดยผู้ฟังแบบพาสซีฟ เช่น TLS หรือ USB
ScannerOption
พร็อพเพอร์ตี้
-
ความสามารถในการกำหนดค่า
ระบุว่าสามารถเปลี่ยนตัวเลือกได้หรือไม่และอย่างไร
-
การจำกัด
OptionConstraint ไม่บังคับ
กำหนด
OptionConstraintในตัวเลือกเครื่องสแกนปัจจุบัน -
คำอธิบาย
สตริง
คำอธิบายแบบยาวของตัวเลือก
-
isActive
บูลีน
ระบุว่าตัวเลือกทำงานอยู่และสามารถตั้งค่าหรือเรียกข้อมูลได้ หากเป็นเท็จ ระบบจะไม่ตั้งค่าพร็อพเพอร์ตี้
value -
isAdvanced
บูลีน
ระบุว่า UI ไม่ควรแสดงตัวเลือกนี้โดยค่าเริ่มต้น
-
isAutoSettable
บูลีน
ไดรเวอร์เครื่องสแกนสามารถตั้งค่าได้โดยอัตโนมัติ
-
isDetectable
บูลีน
ระบุว่าซอฟต์แวร์สามารถตรวจจับตัวเลือกนี้ได้
-
isEmulated
บูลีน
จำลองโดยไดรเวอร์เครื่องสแกนหากเป็นจริง
-
name
สตริง
ชื่อตัวเลือกที่ใช้ตัวอักษร ASCII ตัวพิมพ์เล็ก ตัวเลข และขีดกลาง ไม่อนุญาตให้ใช้เครื่องหมายกำกับการออกเสียง
-
title
สตริง
ชื่อแบบบรรทัดเดียวที่พิมพ์ได้
-
ประเภท
ประเภทข้อมูลที่อยู่ในพร็อพเพอร์ตี้
valueซึ่งจำเป็นสำหรับการตั้งค่าตัวเลือกนี้ -
หน่วย
หน่วยวัดสำหรับตัวเลือกนี้
-
value
string | number | boolean | number[] ไม่บังคับ
ค่าปัจจุบันของตัวเลือก (หากเกี่ยวข้อง) โปรดทราบว่าประเภทข้อมูลของพร็อพเพอร์ตี้นี้ต้องตรงกับประเภทข้อมูลที่ระบุใน
type
ScanOptions
พร็อพเพอร์ตี้
-
maxImages
number ไม่บังคับ
จำนวนรูปภาพที่สแกนที่อนุญาต ค่าเริ่มต้นคือ 1
-
mimeTypes
string[] ไม่บังคับ
ประเภท MIME ที่ผู้โทรยอมรับ
ScanResults
พร็อพเพอร์ตี้
-
dataUrls
string[]
อาร์เรย์ของ URL รูปภาพข้อมูลในรูปแบบที่ส่งเป็นค่า "src" ไปยังแท็กรูปภาพได้
-
mimeType
สตริง
ประเภท MIME ของ
dataUrls
SetOptionResult
พร็อพเพอร์ตี้
-
name
สตริง
ระบุชื่อของตัวเลือกที่ตั้งค่าไว้
-
ผลลัพธ์
ระบุผลลัพธ์ของการตั้งค่าตัวเลือก
SetOptionsResponse
พร็อพเพอร์ตี้
-
ตัวเลือก
object ไม่บังคับ
การแมปคีย์-ค่าที่อัปเดตจากชื่อตัวเลือกเป็นค่า
ScannerOptionที่มีการกำหนดค่าใหม่หลังจากพยายามตั้งค่าตัวเลือกทั้งหมดที่ระบุ ซึ่งมีโครงสร้างเหมือนกับพร็อพเพอร์ตี้optionsในOpenScannerResponseระบบจะตั้งค่าพร็อพเพอร์ตี้นี้แม้ว่าจะตั้งค่าบางตัวเลือกไม่สำเร็จ แต่จะยกเลิกการตั้งค่าหากดึงข้อมูลการกำหนดค่าที่อัปเดตไม่สำเร็จ (เช่น หากสแกนเนอร์ถูกตัดการเชื่อมต่อระหว่างการสแกน)
-
ผลลัพธ์
อาร์เรย์ของผลลัพธ์ โดยมี 1 รายการสำหรับ
OptionSettingที่ส่งเข้ามาแต่ละรายการ -
scannerHandle
สตริง
ระบุแฮนเดิลของเครื่องสแกนที่ส่งไปยัง
setOptions()
StartScanOptions
พร็อพเพอร์ตี้
-
รูปแบบ
สตริง
ระบุประเภท MIME เพื่อแสดงผลข้อมูลที่สแกน
-
maxReadSize
number ไม่บังคับ
หากระบุค่าที่ไม่ใช่ 0 ระบบจะจำกัดจำนวนไบต์ที่สแกนสูงสุดที่แสดงในการตอบกลับ
readScanDataรายการเดียวให้เป็นค่านั้น ค่าต่ำสุดที่อนุญาตคือ 32768 (32 KB) หากไม่ได้ระบุพร็อพเพอร์ตี้นี้ ขนาดของส่วนที่แสดงผลอาจใหญ่เท่ากับรูปภาพที่สแกนทั้งหมด
StartScanResponse
พร็อพเพอร์ตี้
-
งาน
สตริง ไม่บังคับ
หาก
resultเป็นSUCCESSจะแสดงแฮนเดิลที่ใช้เพื่ออ่านข้อมูลการสแกนหรือยกเลิกงานได้ -
ผลลัพธ์
ผลลัพธ์ของการเริ่มสแกน หากค่าของฟิลด์นี้เป็น
SUCCESSระบบจะป้อนข้อมูลในพร็อพเพอร์ตี้job -
scannerHandle
สตริง
ระบุแฮนเดิลเครื่องสแกนเดียวกันกับที่ส่งไปยัง
startScan()
เมธอด
cancelScan()
browser.documentScan.cancelScan(
job: string,
): Promise<CancelScanResponse>
ยกเลิกการสแกนที่เริ่มต้นแล้วและแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ CancelScanResponse หากใช้ Callback ระบบจะส่งออบเจ็กต์ไปยัง Callback แทน
พารามิเตอร์
-
งาน
สตริง
แฮนเดิลของงานสแกนที่ใช้งานอยู่ซึ่งก่อนหน้านี้แสดงผลจากการเรียกใช้
startScan
การคืนสินค้า
-
Promise<CancelScanResponse>
แสดงผล Promise ซึ่งจะได้รับการแก้ไขด้วยผลลัพธ์
closeScanner()
browser.documentScan.closeScanner(
scannerHandle: string,
): Promise<CloseScannerResponse>
ปิดเครื่องสแกนด้วยแฮนเดิลที่ส่งเข้ามาและแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ CloseScannerResponse หากใช้ Callback ระบบจะส่งออบเจ็กต์ไปยัง Callback แทน แม้ว่าการตอบกลับจะไม่สำเร็จ แต่แฮนเดิลที่ระบุจะใช้ไม่ได้และไม่ควรใช้สำหรับการดำเนินการเพิ่มเติม
พารามิเตอร์
-
scannerHandle
สตริง
ระบุแฮนเดิลของสแกนเนอร์ที่เปิดอยู่ซึ่งส่งกลับมาก่อนหน้านี้จากการเรียกใช้
openScanner
การคืนสินค้า
-
Promise<CloseScannerResponse>
แสดงผล Promise ซึ่งจะได้รับการแก้ไขด้วยผลลัพธ์
getOptionGroups()
browser.documentScan.getOptionGroups(
scannerHandle: string,
): Promise<GetOptionGroupsResponse>
รับชื่อกลุ่มและตัวเลือกสมาชิกจากเครื่องสแกนที่เปิดไว้ก่อนหน้านี้โดย openScanner เมธอดนี้จะแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ GetOptionGroupsResponse หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน
พารามิเตอร์
-
scannerHandle
สตริง
แฮนเดิลของเครื่องสแกนที่เปิดอยู่ซึ่งแสดงผลจากการเรียกใช้
openScanner
การคืนสินค้า
-
Promise<GetOptionGroupsResponse>
แสดงผล Promise ซึ่งจะได้รับการแก้ไขด้วยผลลัพธ์
getScannerList()
browser.documentScan.getScannerList(
filter: DeviceFilter,
): Promise<GetScannerListResponse>
รับรายการเครื่องสแกนที่ใช้ได้และแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ GetScannerListResponse หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน
พารามิเตอร์
-
ตัวกรอง
DeviceFilterที่ระบุประเภทเครื่องสแกนที่ควรแสดงผล
การคืนสินค้า
-
Promise<GetScannerListResponse>
แสดงผล Promise ซึ่งจะแก้ไขด้วยผลลัพธ์และรายการเครื่องสแกน
openScanner()
browser.documentScan.openScanner(
scannerId: string,
): Promise<OpenScannerResponse>
เปิดสแกนเนอร์สำหรับการเข้าถึงแบบพิเศษและแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ OpenScannerResponse หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน
พารามิเตอร์
-
scannerId
สตริง
รหัสของเครื่องสแกนที่จะเปิด ค่านี้เป็นค่าที่แสดงผลจากการเรียกใช้
getScannerListก่อนหน้านี้
การคืนสินค้า
-
Promise<OpenScannerResponse>
แสดงผล Promise ซึ่งจะได้รับการแก้ไขด้วยผลลัพธ์
readScanData()
browser.documentScan.readScanData(
job: string,
): Promise<ReadScanDataResponse>
อ่านข้อมูลรูปภาพที่พร้อมใช้งานส่วนถัดไปจากแฮนเดิลงานที่ใช้งานอยู่ และแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ ReadScanDataResponse หากใช้ Callback ระบบจะส่งออบเจ็กต์ไปยัง Callback แทน
**หมายเหตุ:**ผลลัพธ์การตอบกลับที่ถูกต้องคือ SUCCESS โดยมีสมาชิก data ที่มีความยาวเป็น 0 ซึ่งหมายความว่าเครื่องสแกนยังคงทำงานอยู่ แต่ยังไม่มีข้อมูลเพิ่มเติมที่พร้อมใช้งาน ผู้โทรควรรอสักครู่แล้วลองอีกครั้ง
เมื่องานสแกนเสร็จสมบูรณ์ การตอบกลับจะมีค่าผลลัพธ์เป็น EOF การตอบกลับนี้อาจมีสมาชิก data ที่ไม่ใช่ 0 ตัวสุดท้าย
พารามิเตอร์
-
งาน
สตริง
แฮนเดิลงานที่ใช้งานอยู่ซึ่งส่งคืนก่อนหน้านี้จาก
startScan
การคืนสินค้า
-
Promise<ReadScanDataResponse>
แสดงผล Promise ซึ่งจะได้รับการแก้ไขด้วยผลลัพธ์
scan()
browser.documentScan.scan(
options: ScanOptions,
): Promise<ScanResults>
สแกนเอกสารและแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ ScanResults หากมีการส่ง Callback ไปยังฟังก์ชันนี้ ระบบจะส่งข้อมูลที่แสดงผลไปยัง Callback แทน
พารามิเตอร์
-
ตัวเลือก
ออบเจ็กต์ที่มีพารามิเตอร์การสแกน
การคืนสินค้า
-
Promise<ScanResults>
Chrome 96 ขึ้นไป browser.* ตั้งแต่ Chrome 148แสดงผล Promise ซึ่งจะแก้ไขด้วยผลการสแกน
setOptions()
browser.documentScan.setOptions(
scannerHandle: string,
options: OptionSetting[],
): Promise<SetOptionsResponse>
ตั้งค่าตัวเลือกในเครื่องสแกนที่ระบุและแสดงผล Promise ที่แก้ไขด้วยออบเจ็กต์ SetOptionsResponse ซึ่งมีผลลัพธ์ของการพยายามตั้งค่าทุกค่าตามลำดับของออบเจ็กต์ OptionSetting ที่ส่งเข้ามา หากใช้ Callback ระบบจะส่งออบเจ็กต์ไปยัง Callback แทน
พารามิเตอร์
-
scannerHandle
สตริง
แฮนเดิลของเครื่องสแกนเพื่อตั้งค่าตัวเลือก ค่านี้ควรเป็นค่าที่แสดงผลก่อนหน้านี้จากการเรียกไปยัง
openScanner -
ตัวเลือก
รายการออบเจ็กต์
OptionSettingรายการที่จะใช้กับเครื่องสแกน
การคืนสินค้า
-
Promise<SetOptionsResponse>
แสดงผล Promise ซึ่งจะได้รับการแก้ไขด้วยผลลัพธ์
startScan()
browser.documentScan.startScan(
scannerHandle: string,
options: StartScanOptions,
): Promise<StartScanResponse>
เริ่มการสแกนบนเครื่องสแกนที่ระบุและแสดงผล Promise ที่แก้ไขด้วย StartScanResponse หากใช้ Callback ระบบจะส่งออบเจ็กต์ไปยัง Callback แทน หากการเรียกใช้สำเร็จ การตอบกลับจะมีแฮนเดิลงานที่ใช้ในการเรียกใช้ครั้งต่อๆ ไปเพื่ออ่านข้อมูลการสแกนหรือยกเลิกการสแกนได้
พารามิเตอร์
-
scannerHandle
สตริง
แฮนเดิลของเครื่องสแกนที่เปิดอยู่ ค่านี้ควรเป็นค่าที่แสดงผลก่อนหน้านี้จากการเรียกไปยัง
openScanner -
ตัวเลือก
ออบเจ็กต์
StartScanOptionsที่ระบุตัวเลือกที่จะใช้สำหรับการสแกน พร็อพเพอร์ตี้StartScanOptions.formatต้องตรงกับรายการใดรายการหนึ่งที่แสดงในScannerInfoของเครื่องสแกน
การคืนสินค้า
-
Promise<StartScanResponse>
แสดงผล Promise ซึ่งจะได้รับการแก้ไขด้วยผลลัพธ์