Mô tả
Sử dụng API chrome.documentScan để khám phá và truy xuất hình ảnh từ trình quét tài liệu đính kèm.
Document Scan API được thiết kế để cho phép các ứng dụng và tiện ích xem nội dung của tài liệu giấy trên một trình quét tài liệu đính kèm.
Quyền
documentScanPhạm vi cung cấp
Khái niệm và cách sử dụng
API này hỗ trợ hai phương thức quét tài liệu. Nếu trường hợp sử dụng của bạn có thể hoạt động với bất kỳ máy quét nào và không yêu cầu quyền kiểm soát cấu hình, hãy sử dụng phương thức scan(). Các trường hợp sử dụng phức tạp hơn đòi hỏi phải kết hợp nhiều phương thức, chỉ được hỗ trợ trong Chrome 124 trở lên.
Quét đơn giản
Đối với các trường hợp sử dụng đơn giản (tức là những trường hợp có thể hoạt động với bất kỳ máy quét nào và không yêu cầu kiểm soát cấu hình), hãy gọi scan(). Phương thức này nhận một đối tượng ScanOptions và trả về một Lời hứa phân giải bằng một đối tượng ScanResults. Khả năng của tuỳ chọn này bị giới hạn ở số lần quét và
loại MIME mà phương thức gọi sẽ chấp nhận. Bản quét được trả về dưới dạng URL để hiển thị trong thẻ <img> cho giao diện người dùng.
Quét phức tạp
Quá trình quét phức tạp được thực hiện theo ba giai đoạn như mô tả trong phần này. Bản tóm tắt này không mô tả mọi đối số phương thức hoặc mọi thuộc tính được trả về trong một phản hồi. Tài liệu này chỉ nhằm mục đích hướng dẫn chung cho bạn về cách viết mã máy quét.
Chiến dịch Khám phá
Gọi
getScannerList(). Máy quét có sẵn được trả về trong một Promise phân giải bằngGetScannerListResponse.- Đối tượng phản hồi chứa một mảng gồm các đối tượng
ScannerInfo. - Mảng này có thể chứa nhiều mục cho một máy quét nếu máy quét đó hỗ trợ nhiều giao thức hoặc phương thức kết nối.
- Đối tượng phản hồi chứa một mảng gồm các đối tượng
Chọn một máy quét trong mảng được trả về và lưu giá trị của thuộc tính
scannerId.Sử dụng các thuộc tính của từng đối tượng
ScannerInfođể phân biệt giữa nhiều đối tượng cho cùng một máy quét. Các đối tượng từ cùng một máy quét sẽ có cùng giá trị cho thuộc tínhdeviceUuid.ScannerInfocũng chứa thuộc tínhimageFormatschứa một mảng các loại hình ảnh được hỗ trợ.
Cấu hình máy quét
Gọi
openScanner(), truyền mã nhận dạng máy quét đã lưu. Phương thức này trả về một Lời hứa phân giải bằngOpenScannerResponse. Đối tượng phản hồi chứa:Một thuộc tính
scannerHandlemà bạn cần lưu.Một thuộc tính tuỳ chọn chứa các thuộc tính dành riêng cho máy quét mà bạn cần đặt. Hãy xem phần Lấy các tuỳ chọn của trình quét để biết thêm thông tin.
(Không bắt buộc) Nếu bạn cần người dùng cung cấp giá trị cho các tuỳ chọn máy quét, hãy tạo một giao diện người dùng. Bạn sẽ cần các tuỳ chọn máy quét được cung cấp ở bước trước và bạn sẽ cần truy xuất các nhóm tuỳ chọn do máy quét cung cấp. Hãy xem phần Xây dựng giao diện người dùng để biết thêm thông tin.
Tạo một mảng đối tượng
OptionSettingbằng cách sử dụng các giá trị có lập trình hoặc do người dùng cung cấp. Hãy xem phần Đặt tuỳ chọn trình quét để biết thêm thông tin.Truyền mảng đối tượng
OptionSettingđếnsetOptions()để đặt các tuỳ chọn cho trình quét. Hàm này trả về một Promise phân giải bằngSetOptionsResponse. Đối tượng này chứa phiên bản cập nhật của các tuỳ chọn máy quét được truy xuất ở bước 1 của quy trình định cấu hình máy quét.Vì việc thay đổi một lựa chọn có thể làm thay đổi các quy tắc ràng buộc đối với một lựa chọn khác, nên bạn có thể cần lặp lại các bước này nhiều lần.
Đang quét
Tạo một đối tượng
StartScanOptionsvà truyền đối tượng đó đếnstartScan(). Phương thức này trả về một Lời hứa sẽ phân giải bằngStartScanResponse. Thuộc tínhjobcủa nó là một handle mà bạn sẽ dùng để đọc dữ liệu quét hoặc huỷ quá trình quét.Truyền tay điều khiển công việc đến
readScanData(). Phương thức này trả về một Promise phân giải bằng đối tượngReadScanDataResponse. Nếu dữ liệu được đọc thành công, thì thuộc tínhresultcủa dữ liệu đó sẽ bằngSUCCESSvà thuộc tínhdatacủa dữ liệu đó sẽ chứa mộtArrayBuffercó một phần của quá trình quét. Xin lưu ý rằngestimatedCompletionchứa tỷ lệ phần trăm ước tính của tổng số dữ liệu đã được phân phối cho đến nay.Lặp lại bước trước cho đến khi thuộc tính
resultbằngEOFhoặc xảy ra lỗi.
Khi quá trình quét kết thúc, hãy gọi closeScanner() bằng trình xử lý máy quét đã lưu ở bước 3. Hàm này trả về một Lời hứa (Promise) phân giải bằng
CloseScannerResponse. Việc gọi cancelScan() bất cứ lúc nào sau khi tạo công việc sẽ kết thúc quá trình quét.
Đối tượng phản hồi
Tất cả phương thức đều trả về một Promise phân giải bằng một loại đối tượng phản hồi nào đó.
Hầu hết các lớp này đều chứa thuộc tính result có giá trị là một thành viên của OperationResult. Một số thuộc tính của đối tượng phản hồi sẽ không chứa giá trị trừ phi giá trị của result có một giá trị cụ thể. Các mối quan hệ này được mô tả trong tài liệu tham khảo cho từng đối tượng phản hồi.
Ví dụ: OpenScannerResponse.scannerHandle sẽ chỉ có giá trị khi OpenScannerResponse.result bằng SUCCESS.
Tuỳ chọn quét
Các tuỳ chọn máy quét khác nhau đáng kể tuỳ theo thiết bị. Do đó, bạn không thể phản ánh trực tiếp các lựa chọn của máy quét trong documentScan API. Để giải quyết vấn đề này, OpenScannerResponse (được truy xuất bằng openScanner()) và SetOptionsResponse (đối tượng phản hồi cho setOptions()) chứa thuộc tính options, là một đối tượng chứa các tuỳ chọn dành riêng cho máy quét. Mỗi tuỳ chọn là một mối liên kết khoá-giá trị, trong đó khoá là một tuỳ chọn dành riêng cho thiết bị và giá trị là một thực thể của ScannerOption.
Cấu trúc thường có dạng như sau:
{
"key1": { scannerOptionInstance }
"key2": { scannerOptionInstance }
}
Ví dụ: hãy tưởng tượng một máy quét trả về các tuỳ chọn có tên là "nguồn" và "độ phân giải". Cấu trúc của đối tượng options được trả về sẽ có dạng như ví dụ sau. Để đơn giản, chỉ có một phần phản hồi ScannerOption được hiển thị.
{
"source": {
"name": "source",
"type": OptionType.STRING,
...
},
"resolution": {
"name": "resolution",
"type": OptionType.INT,
...
},
...
}
Xây dựng giao diện người dùng
Mặc dù không bắt buộc phải sử dụng API này, nhưng bạn có thể muốn người dùng chọn giá trị cho một lựa chọn cụ thể. Điều này đòi hỏi phải có giao diện người dùng. Sử dụng OpenScannerResponse (do openScanner() mở) để truy xuất các tuỳ chọn cho máy quét được đính kèm như mô tả trong phần trước.
Một số máy quét nhóm các lựa chọn theo cách dành riêng cho thiết bị. Các nhóm này không ảnh hưởng đến hành vi của tuỳ chọn, nhưng vì có thể được đề cập trong tài liệu sản phẩm của máy quét, nên các nhóm này phải được hiển thị cho người dùng. Bạn có thể truy xuất các nhóm này bằng cách gọi getOptionGroups(). Thao tác này sẽ trả về một Lời hứa (Promise) phân giải bằng đối tượng GetOptionGroupsResponse. Thuộc tính groups của đối tượng này chứa một mảng nhóm dành riêng cho máy quét. Sử dụng thông tin trong các nhóm này để sắp xếp các lựa chọn trong OpenScannerResponse để hiển thị.
{
scannerHandle: "123456",
result: SUCCESS,
groups: [
{
title: "Standard",
members: [ "resolution", "mode", "source" ]
}
]
}
Như đã nêu trong phần Cấu hình máy quét, việc thay đổi một tuỳ chọn có thể làm thay đổi các quy tắc ràng buộc đối với một tuỳ chọn khác. Đây là lý do tại sao setOptionsResponse (đối tượng phản hồi cho setOptions()) chứa một thuộc tính options khác. Hãy sử dụng
phương thức này để cập nhật giao diện người dùng. Sau đó, lặp lại nếu cần cho đến khi tất cả các lựa chọn đều được đặt.
Đặt tuỳ chọn máy quét
Đặt các tuỳ chọn máy quét bằng cách truyền một mảng đối tượng OptionSetting đến setOptions(). Ví dụ: hãy xem phần Quét một trang có kích thước Letter sau đây.
Ví dụ
Truy xuất trang dưới dạng blob
Ví dụ này cho thấy một cách để truy xuất trang từ máy quét dưới dạng blob và minh hoạ cách sử dụng startScan() và readScanData() bằng cách sử dụng giá trị của 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" });
}
Quét một trang có kích thước Letter
Ví dụ này cho thấy cách chọn một máy quét, đặt các tuỳ chọn và mở máy quét đó. Sau đó, ứng dụng sẽ truy xuất nội dung của một trang và đóng trình quét. Quy trình này minh hoạ cách sử dụng getScannerList(), openScanner(), setOptions() và closeScanner(). Xin lưu ý rằng nội dung của trang được truy xuất bằng cách gọi hàm pageAsBlob() từ ví dụ trước.
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);
}
Hiện cấu hình
Như đã nêu ở phần khác, để hiển thị các lựa chọn cấu hình của máy quét cho người dùng, bạn cần gọi getOptionGroups() ngoài các lựa chọn của máy quét được trả về từ lệnh gọi đến openScanner(). Điều này giúp người dùng có thể thấy các lựa chọn trong các nhóm do nhà sản xuất xác định. Ví dụ này cho thấy cách thực hiện việc đó.
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");
}
}
}
}
Loại
CancelScanResponse
Thuộc tính
-
công việc
chuỗi
Cung cấp cùng một tay điều khiển công việc đã được truyền đến
cancelScan(). -
kết quả
Kết quả huỷ quét của phần phụ trợ. Nếu kết quả là
OperationResult.SUCCESShoặcOperationResult.CANCELLED, thì quá trình quét đã bị huỷ và máy quét đã sẵn sàng bắt đầu một quá trình quét mới. Nếu kết quả làOperationResult.DEVICE_BUSY, thì trình quét vẫn đang xử lý yêu cầu huỷ; phương thức gọi nên đợi một lúc rồi thử lại yêu cầu. Các giá trị kết quả khác cho biết lỗi vĩnh viễn không nên thử lại.
CloseScannerResponse
Thuộc tính
-
kết quả
Kết quả của việc đóng trình quét. Ngay cả khi giá trị này không phải là
SUCCESS, thì tay điều khiển vẫn không hợp lệ và không được dùng cho bất kỳ thao tác nào khác. -
scannerHandle
chuỗi
Cùng một trình xử lý máy quét như đã truyền đến
closeScanner.
Configurability
Cách thay đổi một lựa chọn.
Enum
"NOT_CONFIGURABLE"
Lựa chọn này ở chế độ chỉ có thể đọc.
"SOFTWARE_CONFIGURABLE"
Bạn có thể đặt tuỳ chọn này trong phần mềm.
"HARDWARE_CONFIGURABLE"
Người dùng có thể đặt tuỳ chọn này bằng cách bật/tắt hoặc nhấn nút trên máy quét.
ConnectionType
Cho biết cách máy quét kết nối với máy tính.
Enum
"UNSPECIFIED"
"USB"
"NETWORK"
ConstraintType
Kiểu dữ liệu của quy tắc ràng buộc được biểu thị bằng OptionConstraint.
Enum
"INT_RANGE"
Quy tắc ràng buộc đối với một dải giá trị OptionType.INT. Các thuộc tính min, max và quant của OptionConstraint sẽ là long và thuộc tính list của đối tượng này sẽ không được đặt.
"FIXED_RANGE"
Quy tắc ràng buộc đối với một dải giá trị OptionType.FIXED. Các thuộc tính min, max và quant của OptionConstraint sẽ là double và thuộc tính list của nó sẽ không được đặt.
"INT_LIST"
Quy tắc ràng buộc đối với một danh sách cụ thể gồm các giá trị OptionType.INT. Thuộc tính OptionConstraint.list sẽ chứa các giá trị long và các thuộc tính khác sẽ không được đặt.
"FIXED_LIST"
Quy tắc ràng buộc đối với một danh sách cụ thể gồm các giá trị OptionType.FIXED. Thuộc tính OptionConstraint.list sẽ chứa các giá trị double và các thuộc tính khác sẽ không được đặt.
"STRING_LIST"
Quy tắc ràng buộc đối với một danh sách cụ thể gồm các giá trị OptionType.STRING. Thuộc tính OptionConstraint.list sẽ chứa các giá trị DOMString và các thuộc tính khác sẽ không được đặt.
DeviceFilter
Thuộc tính
-
trên thiết bị
boolean không bắt buộc
Chỉ trả về những máy quét được kết nối trực tiếp với máy tính.
-
bảo mật
boolean không bắt buộc
Chỉ trả về những máy quét sử dụng phương thức truyền tải an toàn, chẳng hạn như USB hoặc TLS.
GetOptionGroupsResponse
Thuộc tính
-
nhóm
OptionGroup[] không bắt buộc
Nếu
resultlàSUCCESS, thì sẽ cung cấp danh sách các nhóm tuỳ chọn theo thứ tự do trình điều khiển máy quét cung cấp. -
kết quả
Kết quả của việc lấy các nhóm lựa chọn. Nếu giá trị của thuộc tính này là
SUCCESS, thì thuộc tínhgroupssẽ được điền sẵn. -
scannerHandle
chuỗi
Cùng một trình xử lý máy quét như đã truyền đến
getOptionGroups.
GetScannerListResponse
Thuộc tính
-
kết quả
Kết quả liệt kê. Xin lưu ý rằng kết quả một phần có thể được trả về ngay cả khi điều này cho biết có lỗi.
-
máy quét
Danh sách (có thể trống) gồm các máy quét khớp với
DeviceFilterđược cung cấp.
OpenScannerResponse
Thuộc tính
-
tùy chọn
object không bắt buộc
Nếu
resultlàSUCCESS, thì sẽ cung cấp một mối liên kết khoá-giá trị, trong đó khoá là một tuỳ chọn dành riêng cho thiết bị và giá trị là một thực thể củaScannerOption. -
kết quả
Kết quả của việc mở trình quét. Nếu giá trị của thuộc tính này là
SUCCESS, thì các thuộc tínhscannerHandlevàoptionssẽ được điền sẵn. -
scannerHandle
chuỗi không bắt buộc
Nếu
resultlàSUCCESS, thì một tay điều khiển cho máy quét có thể được dùng cho các thao tác khác. -
scannerId
chuỗi
Mã nhận dạng máy quét được chuyển đến
openScanner().
OperationResult
Một enum cho biết kết quả của mỗi thao tác.
Enum
"UNKNOWN"
Đã xảy ra lỗi không xác định hoặc lỗi chung.
"SUCCESS"
Thao tác đã thành công.
"UNSUPPORTED"
Thao tác không được hỗ trợ.
"CANCELLED"
Thao tác đã bị huỷ.
"DEVICE_BUSY"
Thiết bị đang bận.
"INVALID"
Dữ liệu hoặc đối số được truyền đến phương thức không hợp lệ.
"WRONG_TYPE"
Giá trị được cung cấp có kiểu dữ liệu không chính xác cho lựa chọn cơ bản.
"EOF"
Không còn dữ liệu nào khác.
"ADF_JAMMED"
Khay nạp tài liệu bị kẹt.
"ADF_EMPTY"
Khay nạp tài liệu trống.
"COVER_OPEN"
Nắp máy quét phẳng đang mở.
"IO_ERROR"
Đã xảy ra lỗi khi giao tiếp với thiết bị.
"ACCESS_DENIED"
Thiết bị yêu cầu xác thực.
"NO_MEMORY"
Chromebook không có đủ bộ nhớ để hoàn tất thao tác.
"UNREACHABLE"
Không kết nối được với thiết bị.
"MISSING"
Thiết bị đã ngắt kết nối.
"INTERNAL_ERROR"
Đã xảy ra lỗi ở một nơi nào đó không phải là ứng dụng gọi.
OptionConstraint
Thuộc tính
-
danh sách
string[] | number[] không bắt buộc
-
tối đa
number không bắt buộc
-
phút
number không bắt buộc
-
quant
number không bắt buộc
-
loại
OptionGroup
Thuộc tính
-
thành viên
string[]
Một mảng tên tuỳ chọn theo thứ tự do trình điều khiển cung cấp.
-
tiêu đề
chuỗi
Cung cấp tiêu đề có thể in, ví dụ: "Tuỳ chọn hình học".
OptionSetting
Thuộc tính
-
tên
chuỗi
Cho biết tên của tuỳ chọn cần đặt.
-
loại
Cho biết loại dữ liệu của lựa chọn. Kiểu dữ liệu được yêu cầu phải khớp với kiểu dữ liệu thực của lựa chọn cơ bản.
-
value
string | number | boolean | number[] không bắt buộc
Cho biết giá trị cần đặt. Để trống để yêu cầu cài đặt tự động cho các lựa chọn đã bật
autoSettable. Loại dữ liệu được cung cấp chovaluephải khớp vớitype.
OptionType
Kiểu dữ liệu của một lựa chọn.
Enum
"UNKNOWN"
Không xác định được loại dữ liệu của lựa chọn. Thuộc tính value sẽ không được đặt.
"BOOL"
Thuộc tính value sẽ là một trong các giá trị truefalse.
"INT"
Số nguyên 32 bit có dấu. Thuộc tính value sẽ là long hoặc long[], tuỳ thuộc vào việc tuỳ chọn này có nhận nhiều giá trị hay không.
"FIXED"
Một số thực có độ chính xác kép trong khoảng từ -32768 đến 32767,9999 với độ phân giải là 1/65535. Thuộc tính value sẽ là double hoặc double[] tuỳ thuộc vào việc tuỳ chọn có nhận nhiều giá trị hay không. Các giá trị Double không thể biểu thị chính xác sẽ được làm tròn đến phạm vi và độ chính xác có sẵn.
"STRING"
Một chuỗi byte bất kỳ ngoại trừ NUL ('\0'). Thuộc tính value sẽ là DOMString.
"BUTTON"
Một lựa chọn thuộc loại này không có giá trị. Thay vào đó, việc đặt một tuỳ chọn thuộc loại này sẽ gây ra tác dụng phụ dành riêng cho tuỳ chọn trong trình điều khiển máy quét. Ví dụ: trình điều khiển máy quét có thể sử dụng một tuỳ chọn thuộc loại nút để cung cấp phương tiện chọn giá trị mặc định hoặc yêu cầu khay nạp tài liệu tự động chuyển sang tờ giấy tiếp theo.
"GROUP"
Lựa chọn nhóm. Không có giá trị. Giá trị này được đưa vào để đảm bảo khả năng tương thích, nhưng thường sẽ không được trả về trong các giá trị ScannerOption. Sử dụng getOptionGroups() để truy xuất danh sách các nhóm cùng với các lựa chọn thành viên của nhóm.
OptionUnit
Cho biết loại dữ liệu của ScannerOption.unit.
Enum
"UNITLESS"
Giá trị là một số không có đơn vị. Ví dụ: đó có thể là một ngưỡng.
"PIXEL"
Giá trị là số pixel, ví dụ: kích thước quét.
"BIT"
Giá trị là số bit, ví dụ: độ sâu màu.
"MM"
Giá trị được đo bằng milimét, ví dụ: kích thước quét.
"DPI"
Giá trị được đo bằng số điểm trên mỗi inch, ví dụ: độ phân giải.
"PERCENT"
Giá trị là phần trăm, ví dụ: độ sáng.
"MICROSECOND"
Giá trị được đo bằng micrô giây, ví dụ: thời gian phơi sáng.
ReadScanDataResponse
Thuộc tính
-
khác
Không bắt buộc ArrayBuffer
Nếu
resultlàSUCCESS, thì sẽ chứa đoạn dữ liệu hình ảnh được quét tiếp theo. NếuresultlàEOF, thì sẽ chứa phần dữ liệu hình ảnh được quét cuối cùng. -
estimatedCompletion
number không bắt buộc
Nếu
resultlàSUCCESS, thì đây là giá trị ước tính về lượng dữ liệu quét đã được phân phối cho đến nay, trong khoảng từ 0 đến 100. -
công việc
chuỗi
Cung cấp tên người dùng công việc được truyền đến
readScanData(). -
kết quả
Kết quả của việc đọc dữ liệu. Nếu giá trị của nó là
SUCCESS, thìdatachứa đoạn dữ liệu hình ảnh tiếp theo (có thể có độ dài bằng 0) đã sẵn sàng để đọc. Nếu giá trị của thuộc tính này làEOF, thìdatasẽ chứa đoạn dữ liệu hình ảnh cuối cùng.
ScannerInfo
Thuộc tính
-
connectionType
Cho biết cách máy quét kết nối với máy tính.
-
deviceUuid
chuỗi
Để so khớp với các mục
ScannerInfokhác trỏ đến cùng một thiết bị thực. -
imageFormats
string[]
Một mảng các loại MIME có thể được yêu cầu cho các bản quét được trả về.
-
nhà sản xuất
chuỗi
Nhà sản xuất máy quét.
-
kiểu máy
chuỗi
Mẫu máy quét (nếu có) hoặc nội dung mô tả chung.
-
tên
chuỗi
Tên con người có thể đọc được của máy quét để hiển thị trong giao diện người dùng.
-
protocolType
chuỗi
Nội dung mô tả mà con người có thể đọc được về giao thức hoặc trình điều khiển dùng để truy cập vào máy quét, chẳng hạn như Mopria, WSD hoặc epsonds. Điều này chủ yếu hữu ích trong việc cho phép người dùng chọn giữa các giao thức nếu thiết bị hỗ trợ nhiều giao thức.
-
scannerId
chuỗi
Mã của một máy quét cụ thể.
-
bảo mật
boolean
Nếu đúng, thì trình nghe thụ động (chẳng hạn như TLS hoặc USB) không thể chặn phương thức truyền tải của kết nối máy quét.
ScannerOption
Thuộc tính
-
khả năng định cấu hình
Cho biết liệu có thể thay đổi lựa chọn này hay không và thay đổi như thế nào.
-
giới hạn
OptionConstraint không bắt buộc
Xác định
OptionConstrainttrên tuỳ chọn máy quét hiện tại. -
mô tả
chuỗi
Nội dung mô tả dài hơn về lựa chọn.
-
isActive
boolean
Cho biết tuỳ chọn đang hoạt động và có thể được đặt hoặc truy xuất. Nếu bạn đặt thành false, thuộc tính
valuesẽ không được đặt. -
isAdvanced
boolean
Cho biết rằng giao diện người dùng không nên hiển thị tuỳ chọn này theo mặc định.
-
isAutoSettable
boolean
Trình điều khiển máy quét có thể tự động đặt giá trị này.
-
isDetectable
boolean
Cho biết rằng phần mềm có thể phát hiện tuỳ chọn này.
-
isEmulated
boolean
Được trình điều khiển máy quét mô phỏng nếu đúng.
-
tên
chuỗi
Tên lựa chọn sử dụng chữ cái ASCII viết thường, số và dấu gạch ngang. Không được phép sử dụng dấu phụ.
-
tiêu đề
chuỗi
Tiêu đề một dòng có thể in được.
-
loại
Kiểu dữ liệu có trong thuộc tính
value, cần thiết để đặt tuỳ chọn này. -
đơn vị
Đơn vị đo lường cho lựa chọn này.
-
value
string | number | boolean | number[] không bắt buộc
Giá trị hiện tại của lựa chọn (nếu có). Xin lưu ý rằng loại dữ liệu của thuộc tính này phải khớp với loại dữ liệu được chỉ định trong
type.
ScanOptions
Thuộc tính
-
maxImages
number không bắt buộc
Số lượng hình ảnh được phép quét. Giá trị mặc định là 1.
-
mimeTypes
string[] không bắt buộc
Các loại MIME mà phương thức gọi chấp nhận.
ScanResults
Thuộc tính
-
dataUrls
string[]
Một mảng URL hình ảnh dữ liệu ở dạng có thể được truyền dưới dạng giá trị "src" đến thẻ hình ảnh.
-
mimeType
chuỗi
Loại MIME của
dataUrls.
SetOptionResult
Thuộc tính
-
tên
chuỗi
Cho biết tên của lựa chọn đã được đặt.
-
kết quả
Cho biết kết quả của việc đặt tuỳ chọn.
SetOptionsResponse
Thuộc tính
-
tùy chọn
object không bắt buộc
Một mối liên kết khoá-giá trị mới từ tên tuỳ chọn đến giá trị
ScannerOptionchứa cấu hình mới sau khi cố gắng đặt tất cả tuỳ chọn được cung cấp. Thuộc tính này có cùng cấu trúc với thuộc tínhoptionstrongOpenScannerResponse.Thuộc tính này sẽ được đặt ngay cả khi một số tuỳ chọn không được đặt thành công, nhưng sẽ không được đặt nếu không truy xuất được cấu hình đã cập nhật (ví dụ: nếu máy quét bị ngắt kết nối giữa quá trình quét).
-
kết quả
Một mảng kết quả, mỗi kết quả cho mỗi
OptionSettingđược truyền vào. -
scannerHandle
chuỗi
Cung cấp trình xử lý máy quét được truyền đến
setOptions().
StartScanOptions
Thuộc tính
-
định dạng
chuỗi
Chỉ định loại MIME để trả về dữ liệu đã quét.
-
maxReadSize
number không bắt buộc
Nếu bạn chỉ định một giá trị khác 0, thì số byte tối đa được quét và trả về trong một phản hồi
readScanDatasẽ bị giới hạn ở giá trị đó. Giá trị nhỏ nhất được cho phép là 32768 (32 KB). Nếu bạn không chỉ định thuộc tính này, thì kích thước của một đoạn được trả về có thể lớn bằng toàn bộ hình ảnh được quét.
StartScanResponse
Thuộc tính
-
công việc
chuỗi không bắt buộc
Nếu
resultlàSUCCESS, thì sẽ cung cấp một tay điều khiển có thể dùng để đọc dữ liệu quét hoặc huỷ công việc. -
kết quả
Kết quả của việc bắt đầu quét. Nếu giá trị của thuộc tính này là
SUCCESS, thì thuộc tínhjobsẽ được điền sẵn. -
scannerHandle
chuỗi
Cung cấp cùng một tay điều khiển máy quét đã được truyền đến
startScan().
Phương thức
cancelScan()
browser.documentScan.cancelScan(
job: string,
): Promise<CancelScanResponse>
Huỷ quá trình quét đã bắt đầu và trả về một Lời hứa sẽ phân giải bằng đối tượng CancelScanResponse. Nếu lệnh gọi lại được sử dụng, thì đối tượng sẽ được truyền đến lệnh gọi lại đó.
Thông số
-
công việc
chuỗi
Tên người dùng của một công việc quét đang hoạt động được trả về trước đó từ lệnh gọi đến
startScan.
Giá trị trả về
-
Promise<CancelScanResponse>
Trả về một Promise phân giải bằng kết quả.
closeScanner()
browser.documentScan.closeScanner(
scannerHandle: string,
): Promise<CloseScannerResponse>
Đóng máy quét bằng tay điều khiển được truyền vào và trả về một Lời hứa phân giải bằng đối tượng CloseScannerResponse. Nếu lệnh gọi lại được sử dụng, thì đối tượng sẽ được truyền đến lệnh gọi lại đó. Ngay cả khi phản hồi không thành công, tay điều khiển được cung cấp sẽ không hợp lệ và không được dùng cho các thao tác khác.
Thông số
-
scannerHandle
chuỗi
Chỉ định tên người dùng của một trình quét đang mở, được trả về trước đó từ một lệnh gọi đến
openScanner.
Giá trị trả về
-
Promise<CloseScannerResponse>
Trả về một Promise phân giải bằng kết quả.
getOptionGroups()
browser.documentScan.getOptionGroups(
scannerHandle: string,
): Promise<GetOptionGroupsResponse>
Lấy tên nhóm và các lựa chọn thành viên từ một trình quét đã được mở trước đó bằng openScanner. Phương thức này trả về một Lời hứa phân giải bằng đối tượng GetOptionGroupsResponse. Nếu một lệnh gọi lại được truyền đến hàm này, thì dữ liệu được trả về sẽ được truyền đến lệnh gọi lại đó.
Thông số
-
scannerHandle
chuỗi
Giá trị điều khiển của một trình quét đang mở được trả về từ lệnh gọi đến
openScanner.
Giá trị trả về
-
Promise<GetOptionGroupsResponse>
Trả về một Promise phân giải bằng kết quả.
getScannerList()
browser.documentScan.getScannerList(
filter: DeviceFilter,
): Promise<GetScannerListResponse>
Lấy danh sách máy quét hiện có và trả về một Lời hứa phân giải bằng đối tượng GetScannerListResponse. Nếu một lệnh gọi lại được truyền đến hàm này, thì dữ liệu được trả về sẽ được truyền đến lệnh gọi lại đó.
Thông số
-
filter
DeviceFiltercho biết loại máy quét nào sẽ được trả về.
Giá trị trả về
-
Promise<GetScannerListResponse>
Trả về một Lời hứa sẽ phân giải bằng kết quả và danh sách máy quét.
openScanner()
browser.documentScan.openScanner(
scannerId: string,
): Promise<OpenScannerResponse>
Mở một trình quét để có quyền truy cập độc quyền và trả về một Lời hứa sẽ phân giải bằng đối tượng OpenScannerResponse. Nếu một lệnh gọi lại được truyền đến hàm này, thì dữ liệu được trả về sẽ được truyền đến lệnh gọi lại đó.
Thông số
-
scannerId
chuỗi
Mã của trình quét cần mở. Giá trị này là giá trị được trả về từ lệnh gọi trước đó đến
getScannerList.
Giá trị trả về
-
Promise<OpenScannerResponse>
Trả về một Promise phân giải bằng kết quả.
readScanData()
browser.documentScan.readScanData(
job: string,
): Promise<ReadScanDataResponse>
Đọc đoạn dữ liệu hình ảnh có sẵn tiếp theo từ một tay điều khiển công việc đang hoạt động và trả về một Lời hứa phân giải bằng đối tượng ReadScanDataResponse. Nếu lệnh gọi lại được sử dụng, thì đối tượng sẽ được truyền đến lệnh gọi lại đó.
**Lưu ý:**Kết quả phản hồi có thể là SUCCESS với thành viên data có độ dài bằng 0. Điều này có nghĩa là máy quét vẫn đang hoạt động nhưng chưa có thêm dữ liệu. Người gọi nên đợi một lát rồi thử lại.
Khi công việc quét hoàn tất, phản hồi sẽ có giá trị kết quả là EOF. Câu trả lời này có thể chứa một thành viên data khác 0 cuối cùng.
Thông số
-
công việc
chuỗi
Tên người dùng của công việc đang hoạt động được trả về trước đó từ
startScan.
Giá trị trả về
-
Promise<ReadScanDataResponse>
Trả về một Promise phân giải bằng kết quả.
scan()
browser.documentScan.scan(
options: ScanOptions,
): Promise<ScanResults>
Thực hiện quét tài liệu và trả về một Promise phân giải bằng đối tượng ScanResults. Nếu một lệnh gọi lại được truyền đến hàm này, thì dữ liệu được trả về sẽ được truyền đến lệnh gọi lại đó.
Thông số
-
tùy chọn
Một đối tượng chứa các tham số quét.
Giá trị trả về
-
Promise<ScanResults>
Chrome 96 trở lên browser.* kể từ Chrome 148Trả về một Lời hứa (Promise) phân giải bằng kết quả quét.
setOptions()
browser.documentScan.setOptions(
scannerHandle: string,
options: OptionSetting[],
): Promise<SetOptionsResponse>
Đặt các tuỳ chọn trên máy quét được chỉ định và trả về một Promise phân giải bằng đối tượng SetOptionsResponse chứa kết quả của việc cố gắng đặt mọi giá trị theo thứ tự của đối tượng OptionSetting được truyền vào. Nếu lệnh gọi lại được sử dụng, thì đối tượng sẽ được truyền đến lệnh gọi lại đó.
Thông số
-
scannerHandle
chuỗi
Ô điều khiển của máy quét để đặt các tuỳ chọn. Đây phải là giá trị được trả về trước đó từ lệnh gọi đến
openScanner. -
tùy chọn
Danh sách các đối tượng
OptionSettingsẽ được áp dụng cho máy quét.
Giá trị trả về
-
Promise<SetOptionsResponse>
Trả về một Promise phân giải bằng kết quả.
startScan()
browser.documentScan.startScan(
scannerHandle: string,
options: StartScanOptions,
): Promise<StartScanResponse>
Bắt đầu quét trên máy quét được chỉ định và trả về một Lời hứa sẽ phân giải bằng StartScanResponse. Nếu lệnh gọi lại được sử dụng, thì đối tượng sẽ được truyền đến lệnh gọi lại đó. Nếu lệnh gọi thành công, phản hồi sẽ bao gồm một tên người dùng có thể dùng trong các lệnh gọi tiếp theo để đọc dữ liệu quét hoặc huỷ quá trình quét.
Thông số
-
scannerHandle
chuỗi
Tay cầm của một máy quét đang mở. Đây phải là giá trị được trả về trước đó từ lệnh gọi đến
openScanner. -
tùy chọn
Đối tượng
StartScanOptionscho biết các tuỳ chọn sẽ được dùng cho quá trình quét. Thuộc tínhStartScanOptions.formatphải khớp với một trong các mục nhập được trả về trongScannerInfocủa máy quét.
Giá trị trả về
-
Promise<StartScanResponse>
Trả về một Promise phân giải bằng kết quả.