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
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 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 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 các 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, nghĩa là những trường hợp có thể hoạt động với mọi máy 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 sẽ phân giải bằng một đối tượng ScanResults
. Các chức năng của tuỳ chọn này chỉ giới hạn ở số lần quét và các loại MIME mà phương thức gọi sẽ chấp nhận. Các lượt 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 3 giai đoạn như mô tả trong phần này. Bảng 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 phản hồi. Bài viết này chỉ nhằm cung cấp cho bạn hướng dẫn chung về cách viết mã trình quét.
Chiến dịch Khám phá
Gọi
getScannerList()
. Các trình quét có sẵn sẽ được trả về trong một Lời hứa phân giải bằngGetScannerListResponse
.- Đối tượng phản hồi chứa một mảng các đối tượng
ScannerInfo
. - Mảng này có thể chứa nhiều mục nhập 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 các đối tượng
Chọn một trình 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 trình quét. Các đố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 một thuộc tínhimageFormats
chứ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 vào mã 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:Thuộc tính
scannerHandle
mà 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 Truy xuất 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 của 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 của trình quét do bước trước cung cấp và bạn sẽ cần truy xuất các nhóm tuỳ chọn do trình quét cung cấp. Hãy xem phần Tạo giao diện người dùng để biết thêm thông tin.
Tạo một mảng các đối tượng
OptionSetting
bằng cách sử dụng các giá trị do lập trình hoặc do người dùng cung cấp. Hãy xem phần Đặt tuỳ chọn quét để biết thêm thông tin.Truyền mảng các đối tượng
OptionSetting
đếnsetOptions()
để đặt các tuỳ chọn cho trình quét. Phương thức này trả về một Lời hứa giải quyết 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 cấu hình máy quét.Vì việc thay đổi một tuỳ chọn có thể làm thay đổi các điều kiện ràng buộc đối với một tuỳ 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
StartScanOptions
và truyền đối tượng đó vàostartScan()
. Phương thức này trả về một Lời hứa phân giải bằngStartScanResponse
. Thuộc tínhjob
của nó là một handle mà bạn sẽ sử dụng để đọc dữ liệu quét hoặc huỷ quá trình quét.Truyền handle công việc đến
readScanData()
. Phương thức này trả về một Lời hứa phân giải bằng đối tượngReadScanDataResponse
. Nếu dữ liệu được đọc thành công, thuộc tínhresult
của dữ liệu đó sẽ bằngSUCCESS
và thuộc tínhdata
của dữ liệu đó sẽ chứa mộtArrayBuffer
với một phần của quá trình quét. Xin lưu ý rằngestimatedCompletion
chứa tỷ lệ phần trăm ước tính của tổng dữ liệu đã được phân phối cho đến thời điểm hiện tại.Lặp lại bước trước đó cho đến khi thuộc tính
result
bằngEOF
hoặc gặp lỗi.
Khi quá trình quét kết thúc, hãy gọi closeScanner()
bằng tay điều khiển máy quét đã lưu ở bước 3. Phương thức này trả về một Lời hứa 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 Lời hứa giải quyết bằng một đối tượng phản hồi thuộc một loại nào đó.
Hầu hết các thuộc tính này đều chứa một 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 máy quét
Các tuỳ chọn của máy quét có thể khác nhau đáng kể tuỳ theo thiết bị. Do đó, bạn không thể phản ánh các tuỳ chọn của máy quét ngay trong API documentScan. Để giải quyết vấn đề này, OpenScannerResponse
(truy xuất bằng openScanner()
) và SetOptionsResponse
(đối tượng phản hồi cho setOptions()
) chứa thuộc tính options
. Đây 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 ánh xạ 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 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ư ví dụ sau. Để đơn giản, chỉ một phần câu trả lờ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 tuỳ 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 đính kèm như 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ị. Các nhóm này không ảnh hưởng đến hành vi của tuỳ chọn, nhưng vì các nhóm này có thể được đề cập trong tài liệu sản phẩm của trình quét, nên người dùng sẽ thấy các nhóm đó. 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 phân giải bằng đối tượng GetOptionGroupsResponse
. Thuộc tính groups
chứa một mảng các 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 tuỳ 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 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 đối với một tuỳ chọn khác. Đó 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. Sử dụng phương thức này để cập nhật giao diện người dùng. Sau đó, hãy lặp lại nếu cần cho đến khi bạn thiết lập xong tất cả các tuỳ chọn.
Đặt tuỳ chọn máy quét
Đặt các tuỳ chọn của trình quét bằng cách truyền một mảng các đối tượng OptionSetting
đến setOptions()
. Ví dụ: hãy xem phần Quét một trang có kích thước thư sau đây.
Ví dụ
Truy xuất một trang dưới dạng blob
Ví dụ này cho thấy một cách truy xuất mộ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 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 tiêu chuẩn
Ví dụ này cho thấy cách chọn một trình quét, thiết lập các tuỳ chọn của trình quét đó và mở trình quét. Sau đó, ứng dụng này truy xuất nội dung của một trang và đóng máy quét. Quy trình này minh hoạ cách sử dụ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 ở nơi khác, để hiển thị các tuỳ 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 tuỳ chọn máy quét được trả về từ lệnh gọi đến openScanner()
. Điều này giúp hiển thị các tuỳ chọn cho người dùng 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 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
-
công việc
chuỗi
Cung cấp cùng một tên xử lý công việc đã được truyền đến
cancelScan()
. -
kết quả
Kết quả quét huỷ của phần 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 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 khoảng thời gian ngắn rồi thử lại yêu cầu. Các giá trị kết quả khác cho biết một lỗi vĩnh viễn và 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ì handle 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
Tương tự như handle của máy quét được truyền đến
closeScanner
.
Configurability
Cách thay đổi một tuỳ chọn.
Enum
"NOT_CONFIGURABLE"
Tuỳ chọn này 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 kết nối máy quét với máy tính.
Enum
"UNSPECIFIED"
"USB"
"NETWORK" (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"
Giới hạn về một dải giá trị OptionType.INT
. Thuộc tính min
, max
và quant
của OptionConstraint
sẽ là long
và thuộc tính list
của lớp này sẽ bị huỷ thiết lập.
"FIXED_RANGE"
Giới hạn về 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ẽ bị huỷ thiết lập.
"INT_LIST"
Giới hạn về 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ẽ bị huỷ thiết lập.
"FIXED_LIST"
Hạn chế đố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ẽ bị huỷ thiết lập.
"STRING_LIST"
Giới hạn đố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ẽ bị huỷ thiết lập.
DeviceFilter
Thuộc tính
-
local
boolean không bắt buộc
Chỉ trả về những máy quét được gắn trực tiếp vào máy tính.
-
bảo mật
boolean không bắt buộc
Chỉ trả về những trình 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ả nhận được các nhóm tuỳ 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
chuỗi
Tương tự như handle của máy quét được truyền đến
getOptionGroups
.
GetScannerListResponse
Thuộc tính
-
kết quả
Kết quả liệt kê. Xin lưu ý rằng một số kết quả có thể được trả về ngay cả khi kết quả này cho biết có lỗi.
-
máy quét
Danh sách có thể trống gồm các trình quét khớp với
DeviceFilter
đã 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 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ì 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
, thì một handle (tên xử lý) đến 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 của máy quét được truyền đến
openScanner()
.
OperationResult
Một enum cho biết kết quả của mỗi phép toán.
Enum
"UNKNOWN"
Đã xảy ra lỗi không xác định hoặc 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 không hợp lệ.
"WRONG_TYPE"
Giá trị được cung cấp là loại dữ liệu không chính xác cho tuỳ chọn cơ bản.
"EOF"
Không có 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ặ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"
Không có đủ bộ nhớ trên Chromebook để hoàn tất thao tác.
"UNREACHABLE"
Không thể kết nối với thiết bị.
"TẮT"
Thiết 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
-
quant
số 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 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 tuỳ 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 chế độ cài đặt tự động cho các tuỳ 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 tuỳ chọn.
Enum
"UNKNOWN"
Không xác định được loại dữ liệu của tuỳ chọn. Thuộc tính value
sẽ bị huỷ thiết lập.
"BOOL"
Thuộc tính value
sẽ là một trong các giá trị true
false.
"INT"
Số nguyên 32 bit đã ký. Thuộc tính value
sẽ là long hoặc long[], tuỳ thuộc vào việc tuỳ chọn có nhận nhiều giá trị hay không.
"ĐÃ Khắc phục"
Một số thực có dấu trong khoảng -32768-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ị kép không thể biểu diễn chính xác sẽ được làm tròn theo phạm vi và độ chính xác có sẵn.
"STRING"
Một chuỗi bất kỳ ngoại trừ NUL ("\0"). Thuộc tính value
sẽ là một DOMString.
"BUTTON"
Tuỳ 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 một 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 giá trị mặc định hoặc để yêu cầu bộ nạp tài liệu tự động chuyển sang tờ giấy tiếp theo.
"Nhóm"
Tuỳ chọn nhóm. Không có giá trị. Thông tin 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ó các tuỳ chọn thành viên.
Enum
"UNITLESS"
Giá trị là một số không có đơn vị. Ví dụ: giá trị này 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à một tỷ 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
-
dữ liệu
ArrayBuffer không bắt buộc
Nếu
result
làSUCCESS
, chứa phần tiếp theo của dữ liệu hình ảnh đã quét. Nếuresult
làEOF
, chứa phần cuối cùng của dữ liệu hình ảnh đã quét. -
estimatedCompletion
số không bắt buộc
Nếu
result
làSUCCESS
, thì đây là số liệu ước tính về tỷ lệ phần trăm tổng dữ liệu quét đã được phân phối cho đến thời điểm hiện tại, trong khoảng từ 0 đến 100. -
công việc
chuỗi
Cung cấp handle 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 thuộc tính này là
SUCCESS
, thìdata
sẽ chứa phầ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ìdata
sẽ chứa phần dữ liệu hình ảnh cuối cùng.
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
chuỗi
Để so khớp với các mục
ScannerInfo
khá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ô hình máy quét (nếu có) hoặc nội dung mô tả chung.
-
tên
chuỗi
Tên dễ đọc của trình 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 đượ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 khi 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, trình nghe thụ động (chẳng hạn như TLS hoặc USB) không thể chặn quá trình truyền 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 tuỳ chọn này hay không và cách thay đổi.
-
quy tắc ràng buộc
OptionConstraint không bắt buộc
Xác định
OptionConstraint
trê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ề tuỳ 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 giá trị là false, thì thuộc tính
value
sẽ 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
Có thể được trình điều khiển máy quét tự động đặt.
-
isDetectable
boolean
Cho biết rằng tùy chọn này có thể được phát hiện từ phần mềm.
-
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 tuỳ chọn sử dụng chữ cái ASCII viết thường, số và dấu gạch ngang. Không được dùng dấu phụ.
-
tiêu đề
chuỗi
Tiêu đề một 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 tuỳ chọn này.
-
value
string | number | boolean | number[] không bắt buộc
Giá trị hiện tại của tuỳ 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
số không bắt buộc
Số lượng hình ảnh được quét được phép. 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 tuỳ 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
đối tượng không bắt buộc
Bản đồ khoá-giá trị đã cập nhật 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ả các tuỳ chọn được cung cấp. Phần 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ẽ bị huỷ đặ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 khi 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 tay điều khiển 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
số không bắt buộc
Nếu bạn chỉ định một giá trị khác 0, hãy giới hạn số byte được quét tối đa được trả về trong một phản hồi
readScanData
duy nhất thành giá trị đó. Giá trị nhỏ nhất được phép là 32768 (32 KB). Nếu bạn không chỉ định thuộc tính này, kích thước của một phầ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
result
làSUCCESS
, hãy cung cấp một handle 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ínhjob
sẽ đượ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()
chrome.documentScan.cancelScan(
job: string,
callback?: function,
)
Huỷ quá trình quét đã bắt đầu và trả về một Lời hứa phân giải bằng đối tượng CancelScanResponse
. Nếu bạn sử dụng lệnh gọi lại, đối tượng sẽ được truyền đến lệnh gọi lại đó.
Tham số
-
công việc
chuỗi
Tên xử lý của một công việc quét đang hoạt động trước đó được trả về từ lệnh gọi đến
startScan
. -
lệnh gọi lại
hàm không bắt buộc
Tham số
callback
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 Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo 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. Lời hứa sẽ phân giải bằng cùng một 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 handle đã truyền và trả về một Promise phân giải bằng đối tượng CloseScannerResponse
. Nếu bạn sử dụng lệnh gọi lại, đố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, tên người dùng được cung cấp sẽ trở nên không hợp lệ và không được dùng cho các thao tác tiếp theo.
Tham số
-
scannerHandle
chuỗi
Chỉ định handle của một trình quét đang mở trước đó được trả về từ lệnh gọi đến
openScanner
. -
lệnh gọi lại
hàm không bắt buộc
Tham số
callback
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 Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo 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. Lời hứa sẽ phân giải bằng cùng một 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à tuỳ chọn thành viên từ một trình quét mà 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 đến hàm này, thì dữ liệu được trả về sẽ được truyền đến hàm đó.
Tham số
-
scannerHandle
chuỗi
Tay cầm của một trình quét đang mở được trả về từ lệnh gọi đến
openScanner
. -
lệnh gọi lại
hàm không bắt buộc
Tham số
callback
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 Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo 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. Lời hứa sẽ phân giải bằng cùng một 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 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 hàm đó.
Tham số
-
filter
DeviceFilter
cho biết loại trình quét nào sẽ được trả về. -
lệnh gọi lại
hàm không bắt buộc
Tham số
callback
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 Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo 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. Lời hứa sẽ phân giải bằng cùng một 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 để truy cập độc quyền và trả về một Lời hứa 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 hàm đó.
Tham số
-
scannerId
chuỗi
Mã nhận dạng của máy quét cần mở. Giá trị này là giá trị được trả về từ lệnh gọi trước đến
getScannerList
. -
lệnh gọi lại
hàm không bắt buộc
Tham số
callback
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 Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo 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. Lời hứa sẽ phân giải bằng cùng một loại được truyền đến lệnh gọi lại.
readScanData()
chrome.documentScan.readScanData(
job: string,
callback?: function,
)
Đọc phần dữ liệu hình ảnh tiếp theo có sẵn từ một tay cầm 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 bạn sử dụng lệnh gọi lại, đối tượng sẽ được truyền đến lệnh gọi lại đó.
**Lưu ý:**Kết quả phản hồi hợp lệ 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ó dữ liệu bổ sung. Phương thức gọi nên đợi một khoảng thời gian ngắn 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
. Phản hồi này có thể chứa một thành phần data
cuối cùng khác 0.
Tham số
-
công việc
chuỗi
Trình xử lý công việc đang hoạt động trước đó được trả về từ
startScan
. -
lệnh gọi lại
hàm không bắt buộc
Tham số
callback
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 Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo 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. Lời hứa sẽ phân giải bằng cùng một loại được truyền đến lệnh gọi lại.
scan()
chrome.documentScan.scan(
options: ScanOptions,
callback?: function,
)
Thực hiện quét tài liệu và trả về một Lời hứa 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 hàm đó.
Tham số
-
tùy chọn
Một đối tượng chứa các tham số quét.
-
lệnh gọi lại
hàm không bắt buộc
Tham số
callback
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 Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo 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. Lời hứa sẽ phân giải bằng cùng một 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
đã truyền vào. Nếu bạn sử dụng lệnh gọi lại, đối tượng sẽ được truyền đến lệnh gọi lại đó.
Tham số
-
scannerHandle
chuỗi
Tay cầm của trình quét để đặt các tuỳ chọn. Đây phải là giá trị trước đó được trả về từ lệnh gọi đến
openScanner
. -
tùy chọn
Danh sách các đối tượng
OptionSetting
sẽ được áp dụng cho trình quét. -
lệnh gọi lại
hàm không bắt buộc
Tham số
callback
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 Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo 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. Lời hứa sẽ phân giải bằng cùng một 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 quét trên máy quét được chỉ định và trả về một Lời hứa phân giải bằng StartScanResponse
. Nếu bạn sử dụng lệnh gọi lại, đố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 handle công việc có thể được dùng trong các lệnh gọi tiếp theo để đọc dữ liệu quét hoặc huỷ quét.
Tham số
-
scannerHandle
chuỗi
Tay cầm của máy quét đang mở. Đây phải là giá trị trước đó được trả về từ lệnh gọi đến
openScanner
. -
tùy chọn
Đối tượng
StartScanOptions
cho biết các tuỳ chọn sẽ được dùng để quét. Thuộc tínhStartScanOptions.format
phải khớp với một trong các mục nhập được trả về trongScannerInfo
của trình quét. -
lệnh gọi lại
hàm không bắt buộc
Tham số
callback
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 Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo 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. Lời hứa sẽ phân giải bằng cùng một loại được truyền đến lệnh gọi lại.