Mô tả
Sử dụng API chrome.documentScan
để khám phá và truy xuất hình ảnh qua trình quét tài liệu đính kèm.
API Quét tài liệu đượ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áy quét tài liệu đính kèm.
Quyền
documentScan
Phạm vi cung cấp
Khái niệm và cách sử dụng
API này hỗ trợ hai phương tiện quét tài liệu. Nếu trường hợp sử dụng của bạn có thể khắc phục được
với bất kỳ trình quét nào và không yêu cầu kiểm soát cấu hình, hãy sử dụng
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 pháp,
(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, nghĩa là những ứng dụng có thể hoạt động với mọi trình quét 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 lấy một
đối tượng ScanOptions
và trả về một Lời hứa phân giải bằng ScanResults
. Các khả năng của lựa 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
Quy trình quét phức tạp được thực hiện qua ba giai đoạn như được mô tả trong phần này. Phần phác thảo 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 câu trả lời. Tài liệu này chỉ nhằm cung cấp cho bạn một hướng dẫn chung về cách viết máy quét .
Chiến dịch Khám phá
Gọi
getScannerList()
. Sau đây là các trình quét có thể sử dụng được trả về trong một Lời hứa giải quyết bằng mộtGetScannerListResponse
.- Đối tượng phản hồi chứa một mảng
ScannerInfo
. - Mảng có thể chứa nhiều mục nhập cho một trình quét nếu trình 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
Chọn một trình quét từ 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 nhiều đối tượng cho cùng một trình quét. Đối tượng từ cùng một trình quét sẽ có cùng giá trị cho thuộc tínhdeviceUuid
.ScannerInfo
cũng chứa thuộc tínhimageFormats
chứa một mảng loại hình ảnh được hỗ trợ.
Cấu hình máy quét
Gọi lệnh
openScanner()
, truyền mã trình quét đã lưu vào. Phương thức này trả về một Lời hứa (Promise) phân giải bằngOpenScannerResponse
. Đối tượng phản hồi chứa:Bạn cần lưu một thuộc tính
scannerHandle
.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 sẽ cần thiết lập. Xem các tuỳ chọn Truy xuất máy 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 của trình quét, xây dựng 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ởi ở bước trước đó, bạn sẽ cần truy xuất nhóm tuỳ chọn do . Xem bài viết Xây dựng giao diện người dùng để biết thêm thông tin.
Tạo một mảng gồm các đối tượng
OptionSetting
bằng cách sử dụng có lập trình hoặc do người dùng cung cấp. Xem mục Đặt tuỳ chọn cho trình quét để biết thêm thông tin của bạn.Truyền mảng đối tượng
OptionSetting
vàosetOptions()
để đặt tuỳ chọn cho trình quét. Nó trả về Lời hứa giải quyết bằngSetOptionsResponse
. Đối tượng này chứa một phiên bản cập nhật của các tuỳ chọn trình quét được truy xuất trong bước 1 của trình quét .Từ khi bạn thay đổi một tài khoản có thể thay đổi các hạn chế đối với một tuỳ chọn khác, bạn có thể cần phải lặp lại những tuỳ chọn này bước nhiều lần.
Đang quét
Tạo một đối tượng
StartScanOptions
và truyền đối tượng đó vàostartScan()
. Phương thức này trả về một Lời hứa giúp giải quyết vấn đề bằngStartScanResponse
. Thuộc tínhjob
của lớp này là ô điều khiển mà bạn sẽ sử dụng để đọc dữ liệu quét hoặc huỷ quá trình quét.Truyền tên người dùng cho công việc cho
readScanData()
. Hàm này trả về một giá trị Lời hứa sẽ giải quyết bằng Đối tượngReadScanDataResponse
. Nếu dữ liệu được đọc thành công, thuộc tínhresult
của thuộc tính đó bằngSUCCESS
và thuộc tínhdata
của nó chứa mộtArrayBuffer
bằng một phần của quá trình quét. Xin lưu ý rằngestimatedCompletion
chứa số liệu ước tính tỷ lệ phần trăm tổng dữ liệu đã phân phối đến thời điểm này.Lặp lại bước trước đó cho đến khi thuộc tính
result
bằngEOF
hoặc xảy ra lỗi.
Khi đến cuối quá trình quét, hãy gọi
closeScanner()
với tên người dùng của trình quét đã lưu trong bước
3. Hàm này trả về một Lời hứa thực hiện bằng một
CloseScannerResponse
. Gọi điện
cancelScan()
bất cứ lúc nào sau khi công việc được tạo sẽ
kết thúc quét.
Đối tượng phản hồi
Tất cả phương thức đều trả về một Lời hứa (Promise) phân giải bằng một đối tượng phản hồi thuộc loại nào đó.
Hầu hết các thuộc tính này chứa thuộc tính result
có giá trị là thành phầ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
các mối quan hệ được mô tả trong tham chiếu 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
.
Tùy chọn máy quét
Các lựa chọn của máy quét có sự khác biệt đáng kể tuỳ theo thiết bị. Do đó, không thể
trực tiếp phản ánh các tuỳ chọn trình quét trong API DocumentScan. Để di chuyển
này, OpenScannerResponse
(được truy xuất bằng cách sử dụng
openScanner()
) và
SetOptionsResponse
(đối tượng phản hồi cho
setOptions()
) chứa một 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 lựa chọn là một liên kết khoá-giá trị
trong đó khoá là tuỳ chọn dành riêng cho thiết bị và giá trị là một bản sao 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 trình 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ư sau
như ví dụ sau. Để đơn giản hoá, chỉ một phần ScannerOption
các câu trả lời đượ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 tuỳ chọn cụ thể. Việc này yêu cầu giao diện người dùng. Sử dụng
OpenScannerResponse
(mở bởi
openScanner()
) để truy xuất các tuỳ chọn cho tệp đính kèm
như được mô tả trong phần trước.
Một số trình quét nhóm các tuỳ chọn theo cách dành riêng cho thiết bị. Chúng không ảnh hưởng đến lựa chọn
hành vi, nhưng vì các nhóm này có thể được đề cập trong sản phẩm máy quét
tài liệu của bạn, các nhóm như vậy sẽ được hiển thị cho người dùng. Bạn có thể truy xuất các phiên bản này
bằng cách gọi getOptionGroups()
. Thao tác này sẽ trả về một
Lời hứa sẽ giải quyết bằng
Đối tượng GetOptionGroupsResponse
. Bây giờ là groups
có chứa một loạt nhóm dành riêng cho máy quét. Sử dụng thông tin trong
để sắp xếp các lựa chọn trong
OpenScannerResponse
đối với màn hình.
{
scannerHandle: "123456",
result: SUCCESS,
groups: [
{
title: "Standard",
members: [ "resolution", "mode", "source" ]
}
]
}
Như đã nêu trong phần Cấu hình trình 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
vào một tuỳ chọn khác. Đây là lý do
setOptionsResponse
(đối tượng phản hồi cho
setOptions()
) chứa một thuộc tính options
khác. Sử dụng
để cập nhật giao diện người dùng. Sau đó, hãy lặp lại bước này nếu cần cho đến khi tất cả lựa chọn đều đã xong
thiết lập.
Đặt tuỳ chọn cho trình quét
Đặt tuỳ chọn trình quét bằng cách truyền một mảng
Đối tượng OptionSetting
thành
setOptions()
. Để biết ví dụ, hãy xem phần Quét một trang có kích thước chữ cái 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 một trang qua trình quét dưới dạng một blob và
minh hoạ việc 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 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" });
}
Quét một trang có kích thước chữ cái
Ví dụ này minh hoạ cách chọn một trình quét, đặt các tuỳ chọn và mở trình quét đó. Nó
sau đó truy xuất nội dung của một trang và đóng trình quét. Quy trình này
minh hoạ bằng getScannerList()
, openScanner()
, setOptions()
và
closeScanner()
. Lưu ý rằng nội dung của trang được truy xuất bằng cách gọi
hàm pageAsBlob()
trong ví dụ trước.
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);
}
Hiển thị cấu hình
Như đã nêu ở phần khác, việc hiển thị các tuỳ chọn cấu hình của trình quét cho người dùng yêu cầu
gọi getOptionGroups()
cùng với các tuỳ chọn trình quét được trả về từ
gọi đến openScanner()
. Việc này là để có thể hiển thị các tuỳ chọn cho người dùng ở
nhóm do nhà sản xuất xác định. Dưới đây là ví dụ minh hoạ cách thực hiện.
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");
}
}
}
}
Loại
CancelScanResponse
Thuộc tính
-
việc làm
string
Cung cấp cùng một tên người dùng công việc đã được truyền đến
cancelScan()
. -
kết quả
Kết quả huỷ quét của máy chủ phụ trợ. Nếu kết quả là
OperationResult.SUCCESS
hoặcOperationResult.CANCELLED
, thì quá trình quét đã bị huỷ và trình quét sẵn sàng bắt đầu một lượt 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ỷ theo yêu cầu; phương thức gọi sẽ đợi một chút 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 và bạ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
, tên người dùng vẫn không hợp lệ và bạn không nên dùng tên người dùng này cho các thao tác khác. -
scannerHandle
string
Tên người dùng của trình quét tương tự như đã được truyền cho
closeScanner
.
Configurability
Cách thay đổi một lựa chọn.
Enum
"NOT_CONFIGURABLE"
Tuỳ chọn này là chỉ có thể đọc.
"SOFTWARE_CONFIGURABLE"
Bạn có thể đặt lựa 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 một nút trên máy quét.
ConnectionType
Cho biết cách kết nối máy quét với máy tính.
Enum
"KHÔNG XÁC ĐỊNH"
"USB"
"MẠNG"
ConstraintType
Loại dữ liệu của quy tắc ràng buộc được biểu thị bằng OptionConstraint
.
Enum
"INT_RANGE"
Hạn chế đố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à thế hệ list
của nó sẽ không được đặt.
"FIXED_RANGE"
Hạn chế đố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 thuộc tính này sẽ không được đặt.
"INT_LIST"
Quy tắc ràng buộc đối với một danh sách giá trị OptionType.INT
cụ thể. Thuộc tính OptionConstraint.list
sẽ chứa long
giá trị 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 giá trị OptionType.FIXED
cụ thể. Thuộc tính OptionConstraint.list
sẽ chứa double
giá trị 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 giá trị OptionType.STRING
cụ thể. Thuộc tính OptionConstraint.list
sẽ chứa DOMString
giá trị và các thuộc tính khác sẽ không được đặt.
DeviceFilter
Thuộc tính
-
local
boolean không bắt buộc
Chỉ trả lại các máy quét được gắn 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
result
làSUCCESS
, hãy 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 nhận 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ínhgroups
sẽ được điền sẵn. -
scannerHandle
string
Tên người dùng của trình quét tương tự như đã được truyền cho
getOptionGroups
.
GetScannerListResponse
Thuộc tính
-
kết quả
Kết quả liệt kê. Lưu ý rằng kết quả một phần có thể được trả về ngay cả khi điều này cho thấy có lỗi.
-
máy quét
Danh sách các trình quét có thể trống phù hợp với
DeviceFilter
được cung cấp.
OpenScannerResponse
Thuộc tính
-
tùy chọn
đối tượng không bắt buộc
Nếu
result
làSUCCESS
, hãy cung cấp mối liên kết khoá-giá trị, trong đó khoá là một lựa 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ínhscannerHandle
vàoptions
sẽ được điền sẵn. -
scannerHandle
chuỗi không bắt buộc
Nếu
result
làSUCCESS
, bạn có thể dùng một tay cầm cho trình quét để thực hiện các thao tác khác. -
scannerId
string
Mã máy quét được truyền đến
openScanner()
.
OperationResult
Một giá trị 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 này 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 đều không hợp lệ.
"WRONG_TYPE"
Giá trị đã cung cấp không đúng loại dữ liệu cho lựa chọn cơ bản.
"EOF"
Không có thêm dữ liệu nào.
"ADF_JAMMED"
Trình nạp tài liệu bị kẹt.
"ADF_EMPTY"
Trình nạp tài liệu trống.
"COVER_OPEN"
Nắp đế phẳng đang mở.
"IO_ERROR"
Đã xảy ra lỗi khi kết nối với thiết bị.
"ACCESS_DENIED"
Thiết bị yêu cầu xác thực.
"NO_MEMORY"
Không có đủ bộ nhớ trên Chromebook để hoàn tất thao tác.
"UNREACHABLE"
Không kết nối được với thiết bị.
"MISSING"
Thiết bị đã bị ngắt kết nối.
"INTERNAL_ERROR"
Đã xảy ra lỗi ở nơi khác ngoài ứng dụng gọi.
OptionConstraint
Thuộc tính
-
danh sách
string[] | number[] không bắt buộc
-
tối đa
số không bắt buộc
-
phút
số không bắt buộc
-
lượng tử
số không bắt buộc
-
loại
OptionGroup
Thuộc tính
-
thành viên
chuỗi[]
Một mảng tên các lựa chọn theo thứ tự do người lái xe cung cấp.
-
tiêu đề
string
Cung cấp tiêu đề in được, ví dụ: "Tuỳ chọn hình học".
OptionSetting
Thuộc tính
-
tên
string
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 tuỳ chọn. Loại dữ liệu được yêu cầu phải khớp với loại dữ liệu thực của lựa chọn cơ bản.
-
value
string | số | boolean | number[] không bắt buộc
Cho biết giá trị cần đặt. Hãy không đặt để yêu cầu chế độ cài đặt tự động cho các lựa chọn đã bật
autoSettable
. Loại dữ liệu được cung cấp chovalue
phải khớp vớitype
.
OptionType
Loại dữ liệu của một lựa chọn.
Enum
"UNKNOWN"
Loại dữ liệu của lựa chọn này không xác định. Thuộc tính value
sẽ bị huỷ thiết lập.
"BOOL"
Thuộc tính value
sẽ có giá trị là true
false.
"INT"
Một số nguyên 32 bit đã ký. Thuộc tính value
sẽ dài 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"
Gấp đôi trong khoảng -32768-32767.9999 với độ phân giải 1/65535. Thuộc tính value
sẽ là gấp đôi hoặc kép [], tuỳ thuộc vào việc tuỳ chọn này có nhận nhiều giá trị hay không. Những giá trị kép không thể thể hiện chính xác sẽ được làm tròn thành phạm vi và độ chính xác có sẵn.
"STRING"
Một chuỗi gồm bất kỳ byte nào ngoại trừ NUL ('\0'). Thuộc tính value
sẽ là DOMString.
"NÚT"
Tuỳ chọn 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 hiệu ứng phụ tuỳ chọn cụ thể 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 tuỳ chọn nhập bằng nút để cung cấp phương tiện để chọn các giá trị mặc định hoặc để trình nạp tài liệu tự động chuyển đến trang giấy tiếp theo.
"GROUP"
Tuỳ chọn nhóm. Không có giá trị. Dữ liệu này được dùng để đả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 nhóm kèm theo các lựa chọn về thành viên.
Enum
"UNITLESS"
Giá trị là số không đơn vị. Ví dụ: đó có thể là một ngưỡng.
"PIXEL"
Giá trị là một 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 milimet, ví dụ: kích thước quét.
"DPI"
Giá trị này được đo bằng số điểm trên mỗi inch, chẳng hạn như độ phân giải.
"PERCENT"
Giá trị là phần trăm, ví dụ: độ sáng.
"MICROMETRIC"
Giá trị này được đo bằng micrô giây, chẳng hạn như thời gian phơi sáng.
ReadScanDataResponse
Thuộc tính
-
dữ liệu
ArrayBuffer không bắt buộc
Nếu
result
làSUCCESS
, thì chứa phân đoạn tiếp theo của dữ liệu hình ảnh đã quét. Nếuresult
làEOF
, thì chứa đoạn cuối của dữ liệu hình ảnh đã quét. -
estimatedCompletion
số không bắt buộc
Nếu
result
làSUCCESS
, thì ước tính lượng dữ liệu quét đã phân phối tính đến thời điểm hiện tại, trong phạm vi từ 0 đến 100. -
việc làm
string
Cung cấp tên người dùng đượ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 lớp này là
SUCCESS
, thìdata
sẽ chứ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 tệp này làEOF
, thìdata
sẽ chứa đoạn cuối của dữ liệu hình ảnh.
ScannerInfo
Thuộc tính
-
connectionType
Cho biết cách kết nối máy quét với máy tính.
-
deviceUuid
string
Để so khớp với các mục nhập
ScannerInfo
khác trỏ đến cùng một thiết bị thực. -
imageFormats
chuỗi[]
Một mảng các loại MIME có thể được yêu cầu cho các lần quét trả về.
-
nhà sản xuất
string
Nhà sản xuất máy quét.
-
kiểu máy
string
Mô hình máy quét (nếu có) hoặc nội dung mô tả chung chung.
-
tên
string
Tên mà con người có thể đọc được để trình quét hiển thị trong giao diện người dùng.
-
protocolType
string
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 cho 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
string
Mã của một trình quét cụ thể.
-
bảo mật
boolean
Nếu đúng, quá trình truyền tải kết nối của trình quét sẽ không bị chặn bằng một trình nghe thụ động, chẳng hạn như TLS hoặc USB.
ScannerOption
Thuộc tính
-
khả năng định cấu hình
Cho biết liệu có thể thay đổi tuỳ chọn này hay không và bằng cách nào.
-
quy tắc ràng buộc
OptionConstraint không bắt buộc
Xác định
OptionConstraint
trên tuỳ chọn trình quét hiện tại. -
description
string
Nội dung mô tả dài hơn về lựa chọn.
-
isActive
boolean
Cho biết tuỳ chọn này đang hoạt động và có thể được đặt hoặc truy xuất. Nếu đặt là false, thuộc tính
value
sẽ không được đặt. -
isAdvanced
boolean
Cho biết rằng theo mặc định, giao diện người dùng không nên hiển thị tuỳ chọn này.
-
isAutoSettable
boolean
Trình điều khiển máy quét có thể tự động thiết lập.
-
isDetectable
boolean
Cho biết lựa chọn này có thể được phát hiện qua phần mềm.
-
isEmulated
boolean
Được mô phỏng bằng trình điều khiển máy quét nếu đúng.
-
tên
string
Tên tuỳ 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 dùng dấu phụ.
-
tiêu đề
string
Tiêu đề 1 dòng có thể in được.
-
loại
Loại 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 | số | boolean | number[] không bắt buộc
Giá trị hiện tại của lựa chọn, nếu thích hợp. Lưu ý rằng loại dữ liệu của tài sản này phải khớp với loại dữ liệu đã chỉ định trong
type
.
ScanOptions
Thuộc tính
-
maxImages
số không bắt buộc
Số lượng ảnh đã quét được phép. Giá trị mặc định là 1.
-
mimeTypes
string[] không bắt buộc
Loại MIME được phương thức gọi chấp nhận.
ScanResults
Thuộc tính
-
dataUrls
chuỗi[]
Một mảng URL hình ảnh dữ liệu trong một biểu mẫu có thể được chuyển dưới dạng "src" thành một thẻ hình ảnh.
-
mimeType
string
Loại MIME của
dataUrls
.
SetOptionResult
Thuộc tính
-
tên
string
Cho biết tên của tuỳ chọn đã được đặt.
-
kết quả
Cho biết kết quả của việc đặt lựa chọn này.
SetOptionsResponse
Thuộc tính
-
tùy chọn
đối tượng không bắt buộc
Đã cập nhật ánh xạ khoá-giá trị từ tên tuỳ chọn đến các giá trị
ScannerOption
chứ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ấu trúc giống như thuộc tínhoptions
trongOpenScannerResponse
.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 trong 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
string
Cung cấp tay điều khiển trình quét được truyền đến
setOptions()
.
StartScanOptions
Thuộc tính
-
định dạng
string
Chỉ định loại MIME để trả về dữ liệu đã quét.
-
maxReadSize
số không bắt buộc
Nếu một giá trị khác 0 được chỉ định, hãy giới hạn số byte đã quét tối đa được trả về trong một phản hồi
readScanData
duy nhất cho giá trị đó. Giá trị nhỏ nhất được phép là 32768 (32 KB). Nếu thuộc tính này không được chỉ định, kích thước của phân đ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
-
việc làm
chuỗi không bắt buộc
Nếu
result
làSUCCESS
, hãy cung cấp một tên người dùng có thể dùng để đọc dữ liệu quét hoặc huỷ lệnh. -
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ínhjob
sẽ được điền sẵn. -
scannerHandle
string
Cung cấp cùng một tên người dùng của trình quét đã được truyền đến
startScan()
.
Phương thức
cancelScan()
chrome.documentScan.cancelScan(
job: string,
callback?: function,
)
Huỷ quá trình quét đã bắt đầu và trả về một Promise phân giải bằng đối tượng CancelScanResponse
. Nếu bạn sử dụng lệnh gọi lại, thì đối tượng sẽ được truyền vào đối tượng đó.
Tham số
-
việc làm
string
Quá trình xử lý của một lệnh quét đang hoạt động mà trước đó được trả về từ một lệnh gọi đến
startScan
. -
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:(response: CancelScanResponse) => void
-
phản hồi
-
Giá trị trả về
-
Promise<CancelScanResponse>
Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.
closeScanner()
chrome.documentScan.closeScanner(
scannerHandle: string,
callback?: function,
)
Đóng trình quét bằng tên người dùng được truyền vào và trả về một Lời hứa (Promise) phân giải bằng đối tượng CloseScannerResponse
. Nếu bạn sử dụng lệnh gọi lại, thì đối tượng sẽ được truyền vào đối tượng đó. Ngay cả khi phản hồi không thành công, tên người dùng đã cung cấp sẽ không hợp lệ và bạn không nên dùng tên người dùng này cho các thao tác khác.
Tham số
-
scannerHandle
string
Chỉ định xử lý của một trình quét đang mở mà trước đó được lệnh gọi đến
openScanner
trả về. -
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:(response: CloseScannerResponse) => void
-
phản hồi
-
Giá trị trả về
-
Promise<CloseScannerResponse>
Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.
getOptionGroups()
chrome.documentScan.getOptionGroups(
scannerHandle: string,
callback?: function,
)
Lấy tên nhóm và các lựa chọn thành viên từ trình quét do openScanner
mở trước đó. 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 vào hàm này, thì dữ liệu trả về sẽ được truyền vào hàm đó.
Tham số
-
scannerHandle
string
Tài khoản xử lý của một trình quét đang mở được trả về từ lệnh gọi đến
openScanner
. -
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:(response: GetOptionGroupsResponse) => void
-
phản hồi
-
Giá trị trả về
-
Promise<GetOptionGroupsResponse>
Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.
getScannerList()
chrome.documentScan.getScannerList(
filter: DeviceFilter,
callback?: function,
)
Lấy danh sách các trình quét hiện có và trả về một Lời hứa (Promise) sẽ phân giải bằng đối tượng GetScannerListResponse
. Nếu một lệnh gọi lại được truyền vào hàm này, thì dữ liệu trả về sẽ được truyền vào hàm đó.
Tham số
-
filter
DeviceFilter
cho biết loại trình quét cần được trả về. -
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:(response: GetScannerListResponse) => void
-
phản hồi
-
Giá trị trả về
-
Promise<GetScannerListResponse>
Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.
openScanner()
chrome.documentScan.openScanner(
scannerId: string,
callback?: function,
)
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 (Promise) sẽ phân giải bằng đối tượng OpenScannerResponse
. Nếu một lệnh gọi lại được truyền vào hàm này, thì dữ liệu trả về sẽ được truyền vào hàm đó.
Tham số
-
scannerId
string
Mã nhận dạng của trình quét sẽ được mở. Giá trị này được trả về từ lệnh gọi
getScannerList
trước đó. -
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:(response: OpenScannerResponse) => void
-
phản hồi
-
Giá trị trả về
-
Promise<OpenScannerResponse>
Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.
readScanData()
chrome.documentScan.readScanData(
job: string,
callback?: function,
)
Đọc đoạn dữ liệu hình ảnh có sẵn tiếp theo từ một xử lý công việc đang hoạt động và trả về một Promise phân giải bằng đối tượng ReadScanDataResponse
. Nếu bạn sử dụng lệnh gọi lại, thì đối tượng sẽ được truyền vào đối tượng đó.
**Lưu ý:**Kết quả phản hồi phải là SUCCESS
với thành phần data
có độ dài bằng 0. Điều này có nghĩa là trình quét vẫn đang hoạt động nhưng chưa có thêm dữ liệu sẵn sàng. Phương thức gọi sẽ đợi một chút rồi thử lại.
Khi lệnh quét hoàn tất, phản hồi sẽ có giá trị kết quả là EOF
. Phản hồi này có thể chứa một thành phần cuối cùng khác 0 của data
.
Tham số
-
việc làm
string
Tên người dùng đang hoạt động được trả về trước đó từ
startScan
. -
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:(response: ReadScanDataResponse) => void
-
phản hồi
-
Giá trị trả về
-
Promise<ReadScanDataResponse>
Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.
scan()
chrome.documentScan.scan(
options: ScanOptions,
callback?: function,
)
Quét tài liệu và trả về một Lời hứa (Promise) phân giải bằng đối tượng ScanResults
. Nếu một lệnh gọi lại được truyền vào hàm này, thì dữ liệu trả về sẽ được chuyển vào hàm đó.
Tham số
-
tùy chọn
Đối tượng chứa các tham số quét.
-
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:(result: ScanResults) => void
-
kết quả
-
Giá trị trả về
-
Promise<ScanResults>
Chrome 96 trở lênLời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.
setOptions()
chrome.documentScan.setOptions(
scannerHandle: string,
options: OptionSetting[],
callback?: function,
)
Đặt các tuỳ chọn trên trình quét được chỉ định và trả về một Lời hứa 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 bạn sử dụng lệnh gọi lại, thì đối tượng sẽ được truyền vào đối tượng đó.
Tham số
-
scannerHandle
string
Tay cầm của trình quét để đặt các tuỳ chọn. Đây phải là một giá trị trước đó được trả về từ lệnh gọi
openScanner
. -
tùy chọn
Danh sách đối tượng
OptionSetting
sẽ được áp dụng cho trình quét. -
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:(response: SetOptionsResponse) => void
-
phản hồi
-
Giá trị trả về
-
Promise<SetOptionsResponse>
Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.
startScan()
chrome.documentScan.startScan(
scannerHandle: string,
options: StartScanOptions,
callback?: function,
)
Bắt đầu một lượt quét trên trình quét đã chỉ định và trả về một Lời hứa (Promise) sẽ phân giải bằng một StartScanResponse
. Nếu bạn sử dụng lệnh gọi lại, thì đối tượng sẽ được truyền vào đối tượng đó. Nếu lệnh gọi thành công thì phản hồi sẽ bao gồm một tên xử lý công việc có thể dùng trong các lệnh gọi tiếp theo để đọc dữ liệu quét hoặc huỷ một lượt quét.
Tham số
-
scannerHandle
string
Tay cầm của một trình quét đang mở. Đây phải là một giá trị trước đó được trả về từ lệnh gọi
openScanner
. -
tùy chọn
Đối tượng
StartScanOptions
cho biết các tuỳ chọn sẽ dùng để quét. Thuộc tínhStartScanOptions.format
phải khớp với một trong các mục trả về trongScannerInfo
của trình quét. -
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:(response: StartScanResponse) => void
-
phản hồi
-
Giá trị trả về
-
Promise<StartScanResponse>
Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.