chrome.documentScan

Mô tả

Sử dụng API chrome.documentScan để khám phá và truy xuất hình ảnh từ các trình quét tài liệu được đí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 được đính kèm.

Quyền

documentScan

Phạm vi cung cấp

Chrome 44 trở lên Chỉ dành cho ChromeOS
Thời gian rảnh của những thành viên được thêm vào sau sẽ xuất hiện cùng với những thành viên đó.

Khái niệm và cách sử dụng

API này hỗ trợ 2 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ỳ 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 phương thức scan(). Các trường hợp sử dụng phức tạp hơn đòi hỏi sự kết hợp của 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 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 nhận một đối tượng ScanOptions và trả về một Promise phân giải bằng một đối tượng ScanResults. Khả năng của lựa chọn này bị giới hạn ở số lượng bản quét và các loại MIME mà người gọi sẽ chấp nhận. Các 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

Các hoạt động quét phức tạp được thực hiện trong 3 giai đoạn như mô tả trong phần này. Sơ đồ 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. Mục đích của hướng dẫn này chỉ là 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á

  1. 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ằng GetScannerListResponse.

    • Đố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 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.
  2. 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 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ính deviceUuid. ScannerInfo cũng chứa một thuộc tính imageFormats chứa một mảng các loại hình ảnh được hỗ trợ.

Cấu hình máy quét

  1. Gọi openScanner(), truyền vào mã nhận dạng trình quét đã lưu. Nó trả về một Promise phân giải bằng OpenScannerResponse. Đối tượng phản hồi chứa:

    • Một thuộc tính scannerHandle mà bạn cần lưu.

    • Một thuộc tính options 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 các lựa chọn của trình quét để biết thêm thông tin.

  2. (Không bắt buộc) Nếu bạn cần người dùng cung cấp giá trị cho các lựa 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 lựa chọn quét do bước trước cung cấp và bạn sẽ cần truy xuất các nhóm lựa chọn do trình 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.

  3. Tạo một mảng gồm các đối tượng OptionSetting bằng cách sử dụng các giá trị do người dùng cung cấp hoặc theo chương trình. Hãy xem phần Đặt các lựa chọn cho trình quét để biết thêm thông tin.

  4. Truyền mảng các đối tượng OptionSetting đến setOptions() để đặt các lựa chọn cho trình quét. Thao tác này trả về một Promise phân giải bằng SetOptionsResponse. Đối tượng này chứa phiên bản mới của các lựa chọn quét được truy xuất ở bước 1 của cấu hình trình quét.

    Vì việc thay đổi một lựa chọn có thể làm thay đổi các ràng buộc đối với một lựa chọn khác, nên bạn có thể phải lặp lại các bước này nhiều lần.

Đang quét

  1. Tạo một đối tượng StartScanOptions và truyền đối tượng đó đến startScan(). Hàm này trả về một Lời hứa phân giải bằng StartScanResponse. Thuộc tính job của nó là một giá trị nhận dạng mà bạn sẽ dùng để đọc dữ liệu quét hoặc huỷ quá trình quét.

  2. Truyền mã nhận dạng 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ượng ReadScanDataResponse. Nếu dữ liệu được đọc thành công, thuộc tính result của dữ liệu sẽ bằng SUCCESS và thuộc tính data của dữ liệu sẽ chứa một ArrayBuffer với một phần của quá trình quét. Xin lưu ý rằng estimatedCompletion 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 nay.

  3. Lặp lại bước trước cho đến khi thuộc tính result bằng EOF hoặc xảy ra lỗi.

Khi đến cuối quá trình quét, hãy gọi closeScanner() bằng mã nhận dạng trình quét đã lưu ở bước 3. Hàm 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 công việc được tạo sẽ kết thúc quá trình quét.

Đối tượng phản hồi

Tất cả các phương thức đều trả về một Lời hứa phân giải bằng một đối tượng phản hồi nào đó. Hầu hết các đối tượng này đều chứa một thuộc tính result có giá trị là một phần tử 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 thông tin 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.

Các lựa chọn của máy quét

Các lựa chọn về máy quét có sự khác biệt đá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 quét trong documentScan API. Để 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 một thuộc tính options. Đây là một đối tượng chứa các lựa chọn dành riêng cho máy quét. Mỗi lựa chọn là một ánh xạ 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 phiên bản 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 lựa chọn có tên là "source" và "resolution". 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 ScannerOptioncủa 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 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 (mở bằng openScanner()) để truy xuất các lựa chọn cho trình 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ị. Chúng không ảnh hưởng đến hành vi của lựa chọn, nhưng vì các nhóm này có thể được đề cập trong tài liệu về sản phẩm của một trình quét, nên người dùng cần thấy các nhóm như vậy. 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 trả về một Promise phân giải bằng đối tượng GetOptionGroupsResponse. Thuộc tính groups của nó 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 trình quét, việc thay đổi một lựa chọn có thể làm thay đổi các ràng buộc đối với một lựa chọn khác. Đó 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 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 bạn đặt tất cả các lựa chọn.

Đặt các lựa chọn cho máy quét

Đặt các lựa chọn cho 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ỡ chữ 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 một blob và minh hoạ cách sử dụng startScan()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 letter

Ví dụ này cho thấy cách chọn một trình quét, đặt các lựa chọn cho trình quét đó và mở trình quét. Sau đó, ứng dụng sẽ truy xuất nội dung của một trang duy nhất và đóng máy quét. Quy trình này minh hoạ cách sử dụng getScannerList(), openScanner(), setOptions()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() 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 cấu hình

Như đã nêu ở nơi khác, việc cho người dùng thấy các lựa chọn cấu hình của trình quét đòi hỏi phải gọi getOptionGroups() ngoài các lựa chọn trình quét được trả về từ mộ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 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

Chrome 125 trở lên

Thuộc tính

  • công việc

    chuỗi

    Cung cấp cùng một mã nhận dạng 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.SUCCESS hoặc OperationResult.CANCELLED, tức là quá trình quét đã bị huỷ và máy quét đã sẵn sàng bắt đầu một quy trình quét mới. Nếu kết quả là OperationResult.DEVICE_BUSY , tức là trình quét vẫn đang xử lý yêu cầu huỷ; người 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 một lỗi vĩnh viễn mà bạn không nên thử lại.

CloseScannerResponse

Chrome 125 trở lên

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ì đối tượng cũng sẽ 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 tay cầm máy quét như tay cầm đã được truyền đến closeScanner.

Configurability

Chrome 125 trở lên

Cách thay đổi một lựa chọn.

Enum

"NOT_CONFIGURABLE"
Bạn chỉ có thể đọc lựa chọn này.

"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 lựa 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

Chrome 125 trở lên

Cho biết cách máy quét được kết nối với máy tính.

Enum

"UNSPECIFIED"

"USB"

"MẠNG"

ConstraintType

Chrome 125 trở lên

Kiểu dữ liệu của ràng buộc do OptionConstraint biểu thị.

Enum

"INT_RANGE"
Ràng buộc đối với một phạm vi giá trị OptionType.INT. Các thuộc tính min, maxquant của OptionConstraint sẽ là long và thuộc tính list của OptionConstraint sẽ không được đặt.

"FIXED_RANGE"
Ràng buộc đối với một phạm vi giá trị OptionType.FIXED. Các thuộc tính min, maxquant 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"
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"
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"
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

Chrome 125 trở lên

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 một phương thức truyền an toàn, chẳng hạn như USB hoặc TLS.

GetOptionGroupsResponse

Chrome 125 trở lên

Thuộc tính

  • nhóm

    OptionGroup[] không bắt buộc

    Nếu resultSUCCESS, 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 trình 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ính groups sẽ được điền sẵn.

  • scannerHandle

    chuỗi

    Cùng một tay cầm máy quét như tay cầm đã được truyền đến getOptionGroups.

GetScannerListResponse

Chrome 125 trở lên

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 trình quét khớp với DeviceFilter đã cung cấp.

OpenScannerResponse

Chrome 125 trở lên

Thuộc tính

  • tùy chọn

    đối tượng không bắt buộc

    Nếu resultSUCCESS, hãy cung cấp một 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ủa ScannerOption.

  • 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ính scannerHandleoptions sẽ được điền sẵn.

  • scannerHandle

    chuỗi không bắt buộc

    Nếu resultSUCCESS, thì đây là một giá trị nhận dạng cho trình quét mà bạn có thể dùng cho các thao tác khác.

  • scannerId

    chuỗi

    Mã nhận dạng trình quét được truyền đến openScanner().

OperationResult

Chrome 125 trở lên

Một enum cho biết kết quả của từng 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ợ.

"ĐÃ HUỶ"
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ó thêm dữ liệu.

"ADF_JAMMED"
Khay nạp tài liệu bị kẹt.

"ADF_EMPTY"
Khay nạp tài liệu đang trống.

"COVER_OPEN"
Nắp máy quét đ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ị đã bị ngắt kết nối.

"INTERNAL_ERROR"
Đã xảy ra lỗi ở một nơi khác ngoài ứng dụng gọi.

OptionConstraint

Chrome 125 trở lên

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

OptionGroup

Chrome 125 trở lên

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ụ: "Các lựa chọn về hình học".

OptionSetting

Chrome 125 trở lên

Thuộc tính

  • tên

    chuỗi

    Cho biết tên của lựa 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[] optional

    Cho biết giá trị cần đặt. Để trống để 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 cho value phải khớp với type.

OptionType

Chrome 125 trở lên

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 là không xác định. Thuộc tính value sẽ được huỷ đặ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 lựa chọn có lấy nhiều giá trị hay không.

"FIXED"
Một số thực trong phạm vi 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 lựa chọn có lấy nhiều giá trị hay không. Các giá trị có độ chính xác kép 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 gồm mọi byte, ngoại trừ NUL ("\0"). Thuộc tính value sẽ là một DOMString.

"BUTTON"
Lựa chọn thuộc loại này không có giá trị. Thay vào đó, việc đặt một lựa chọn thuộc loại này sẽ gây ra tác dụng phụ dành riêng cho lựa 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ể dùng một lựa 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 bộ 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ị. Tham số 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 về thành viên.

OptionUnit

Chrome 125 trở lên

Cho biết loại dữ liệu cho 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ố lượng 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ị được đo bằng số điểm trên mỗi inch, ví dụ: độ phân giải.

"PERCENT"
Giá trị là 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

Chrome 125 trở lên

Thuộc tính

  • khác

    ArrayBuffer không bắt buộc

    Nếu resultSUCCESS, thì chứa khối tiếp theo của dữ liệu hình ảnh được quét. Nếu resultEOF, thì chứa khối cuối cùng của dữ liệu hình ảnh được quét.

  • estimatedCompletion

    number không bắt buộc

    Nếu resultSUCCESS, thì đây là thông tin ước tính về lượng dữ liệu quét đã được gửi cho đến thời điểm hiện tại, trong phạm vi từ 0 đến 100.

  • công việc

    chuỗi

    Cung cấp mã nhận 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 tham số này là SUCCESS, thì data sẽ chứa khối 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 tham số này là EOF, thì data sẽ chứa khối cuối cùng của dữ liệu hình ảnh.

ScannerInfo

Chrome 125 trở lên

Thuộc tính

  • connectionType

    Cho biết cách máy quét được kết nối 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ẫu 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 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 được về giao thức hoặc trình điều khiển được 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ã nhận dạng của một máy quét cụ thể.

  • bảo mật

    boolean

    Nếu đúng, thì một trình nghe thụ động (chẳng hạn như TLS hoặc USB) không thể chặn quá trình truyền dữ liệu của kết nối máy quét.

ScannerOption

Chrome 125 trở lên

Thuộc tính

  • khả năng định cấu hình

    Cho biết liệu bạn có thể thay đổi lựa chọn này hay không và cách thay đổi.

  • ràng buộc

    OptionConstraint không bắt buộc

    Xác định OptionConstraint trên lựa 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 lựa chọn đang hoạt động và có thể được đặt hoặc truy xuất. Nếu bạn đặt chính sách này thành false, thì 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 được hiển thị lựa chọn này.

  • 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 phần mềm có thể phát hiện được lựa 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 dùng dấu phụ.

  • tiêu đề

    chuỗi

    Một tiêu đề có thể in được.

  • loại

    Loại dữ liệu có trong thuộc tính value, cần thiết để thiết lập lựa chọn này.

  • đơn vị

    Đơn vị đo lường cho lựa chọn này.

  • value

    string | number | boolean | number[] optional

    Giá trị hiện tại của lựa chọn (nếu có). Xin lưu ý rằng kiểu dữ liệu của thuộc tính này phải khớp với kiểu 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à người 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 một thẻ hình ảnh.

  • mimeType

    chuỗi

    Loại MIME của dataUrls.

SetOptionResult

Chrome 125 trở lên

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 lựa chọn.

SetOptionsResponse

Chrome 125 trở lên

Thuộc tính

  • tùy chọn

    đối tượng không bắt buộc

    Một ánh xạ khoá-giá trị được 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ính options trong OpenScannerResponse.

    Thuộc tính này sẽ được đặt ngay cả khi một số lựa chọn không được đặt thành công, nhưng sẽ được 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 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 mã nhận dạng trình quét được truyền đến setOptions().

StartScanOptions

Chrome 125 trở lên

Thuộc tính

  • định dạng

    chuỗi

    Chỉ định loại MIME để trả về dữ liệu được quét.

  • maxReadSize

    number không bắt buộc

    Nếu bạn chỉ định một giá trị khác 0, thì giá trị này sẽ giới hạn số lượng byte được quét tối đa mà một phản hồi readScanData duy nhất trả về. 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 khối được trả về có thể lớn bằng toàn bộ hình ảnh được quét.

StartScanResponse

Chrome 125 trở lên

Thuộc tính

  • công việc

    chuỗi không bắt buộc

    Nếu resultSUCCESS, hãy cung cấp một giá trị nhận dạng có thể dùng để đọc dữ liệu quét hoặc huỷ tác vụ.

  • 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ính job sẽ được điền sẵn.

  • scannerHandle

    chuỗi

    Cung cấp cùng một mã nhận dạng máy quét đã được truyền đến startScan().

Phương thức

cancelScan()

Chrome 125 trở lên
chrome.documentScan.cancelScan(
  job: string,
)
: Promise<CancelScanResponse>

Huỷ một hoạt động 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 dùng một lệnh gọi lại, thì đối tượng sẽ được truyền đến lệnh gọi lại đó.

Thông số

  • công việc

    chuỗi

    Xử lý một tác vụ quét đang hoạt động được trả về trước đó từ một lệnh gọi đến startScan.

Giá trị trả về

closeScanner()

Chrome 125 trở lên
chrome.documentScan.closeScanner(
  scannerHandle: string,
)
: Promise<CloseScannerResponse>

Đóng trình quét bằng mã nhận dạng được truyền vào và trả về một Promise phân giải bằng đối tượng CloseScannerResponse. Nếu bạn dùng một lệnh gọi lại, 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, mã nhận 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.

Thông số

  • scannerHandle

    chuỗi

    Chỉ định mã nhận dạng của một trình quét đang mở mà trước đó được trả về từ một lệnh gọi đến openScanner.

Giá trị trả về

getOptionGroups()

Chrome 125 trở lên
chrome.documentScan.getOptionGroups(
  scannerHandle: string,
)
: Promise<GetOptionGroupsResponse>

Lấy tên nhóm và các lựa chọn về thành viên từ một trình quét mà trước đó đã được openScanner mở. Phương thức này trả về một Promise 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

    Xử lý một trình quét đang mở được trả về từ lệnh gọi đến openScanner.

Giá trị trả về

getScannerList()

Chrome 125 trở lên
chrome.documentScan.getScannerList(
  filter: DeviceFilter,
)
: Promise<GetScannerListResponse>

Lấy danh sách các trình quét hiện có và trả về một Promise 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ố

Giá trị trả về

openScanner()

Chrome 125 trở lên
chrome.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 Promise 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ã nhận dạng của máy quét cần mở. Giá trị này là một giá trị được trả về từ lệnh gọi trước đó đến getScannerList.

Giá trị trả về

readScanData()

Chrome 125 trở lên
chrome.documentScan.readScanData(
  job: string,
)
: Promise<ReadScanDataResponse>

Đọc khối dữ liệu hình ảnh có sẵn tiếp theo từ một mã nhận dạng 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 dùng một lệnh gọi lại, 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 phần data có độ dài bằng 0. Điều này có nghĩa là trình quét vẫn hoạt động nhưng chưa có thêm dữ liệu. Người gọi nên đợi một lúc rồi thử lại.

Khi quá trì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 viên data cuối cùng khác 0.

Thông số

  • công việc

    chuỗi

    Xử lý công việc đang hoạt động được trả về trước đó từ startScan.

Giá trị trả về

scan()

chrome.documentScan.scan(
  options: ScanOptions,
)
: Promise<ScanResults>

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 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ề

setOptions()

Chrome 125 trở lên
chrome.documentScan.setOptions(
  scannerHandle: string,
  options: OptionSetting[],
)
: Promise<SetOptionsResponse>

Đặt các lựa chọn trên trình quét đã chỉ định và trả về một Promise phân giải bằng một đố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 dùng một lệnh gọi lại, thì đối tượng sẽ được truyền đến lệnh gọi lại đó.

Thông số

  • scannerHandle

    chuỗi

    Xử lý trình quét để đặt các lựa chọn. Đây phải là giá trị được trả về trước đó từ một lệnh gọi đến openScanner.

  • tùy chọn

    Một danh sách các đối tượng OptionSetting sẽ được áp dụng cho máy quét.

Giá trị trả về

startScan()

Chrome 125 trở lên
chrome.documentScan.startScan(
  scannerHandle: string,
  options: StartScanOptions,
)
: Promise<StartScanResponse>

Bắt đầu quét trên máy quét đã chỉ định và trả về một Promise phân giải bằng StartScanResponse. Nếu bạn dùng một lệnh gọi lại, 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 mã nhận dạng 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.

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ừ một lệnh gọi đến openScanner.

  • tùy chọn

    Một đối tượng StartScanOptions cho biết các lựa chọn sẽ được dùng cho quá trình quét. Thuộc tính StartScanOptions.format phải khớp với một trong các mục được trả về trong ScannerInfo của trình quét.

Giá trị trả về