คำอธิบาย
ใช้ 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 ที่แก้ไข ด้วยStartScanResponsejobพร็อพเพอร์ตี้ของออบเจ็กต์นี้ คือแฮนเดิลที่คุณจะใช้เพื่ออ่านข้อมูลการสแกนหรือยกเลิกการสแกนส่งแฮนเดิลของงานให้
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 จะเป็นค่าใดค่าหนึ่งระหว่าง 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() เพื่อดึงข้อมูลรายการกลุ่มพร้อมตัวเลือกสมาชิก
ค่าแจกแจง
"UNITLESS"
ค่าเป็นตัวเลขที่ไม่มีหน่วย เช่น อาจเป็นเกณฑ์
"PIXEL"
ค่าคือจำนวนพิกเซล เช่น ขนาดการสแกน
"BIT"
ค่าคือจำนวนบิต เช่น ความลึกของสี
"มม."
ค่าจะวัดเป็นมิลลิเมตร เช่น ขนาดการสแกน
"DPI"
ค่าจะวัดเป็นจุดต่อนิ้ว เช่น ความละเอียด
"PERCENT"
ค่าเป็นเปอร์เซ็นต์ เช่น ความสว่าง
"MICROSECOND"
ค่าจะวัดเป็นไมโครวินาที เช่น เวลาเปิดรับแสง
ReadScanDataResponse
พร็อพเพอร์ตี้
-
เพิ่มเติม
ArrayBuffer ไม่บังคับ
หาก
resultเป็นSUCCESSจะมีข้อมูลรูปภาพที่สแกนแล้วถัดไป หากresultเป็นEOFจะมีข้อมูลรูปภาพที่สแกนสุดท้าย -
estimatedCompletion
หมายเลข ไม่บังคับ
หาก
resultเป็นSUCCESSค่าประมาณของข้อมูลการสแกนทั้งหมดที่ส่งแล้วจนถึงตอนนี้ในช่วง 0 ถึง 100 -
งาน
สตริง
ระบุแฮนเดิลของงานที่ส่งไปยัง
readScanData() -
ผลลัพธ์
ผลลัพธ์ของการอ่านข้อมูล หากค่าเป็น
SUCCESSแสดงว่าdataมีข้อมูลรูปภาพส่วน next (อาจมีความยาวเป็น 0) ที่พร้อมอ่าน หากมีค่าเป็นEOFdataจะมีข้อมูลรูปภาพส่วนสุดท้าย
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>